10/28/2008

Web based data visualization tools!

Great references:
40 Essential Tools and Resources to Visualize Data

Quote:

PHP

PHP was the first scripting language I learned that was well-suited for the Web, so I'm pretty comfortable with it. I oftentimes use PHP to get CSV files into some XML format. The function fgetcsv() does just fine. It's also a good hook into a MySQL database or calling API methods.

RESOURCES:

Python

Most computer science types - at least the ones I've worked with - scoff at PHP and opt for Python mostly because Python code is often better structured (as a requirement) and has cooler server-side functions. My favorite Python toy is Beautiful Soup, which is an HTML/XML parser. What does that mean? Beautiful Soup is excellent for screen scraping.

RESOURCES:

MySQL

When I have a lot of data - like on the magnitude of the tends to hundreds of thousands - I use PHP or Python to stick it in a MySQL database. MySQL lets me subset on the data on pretty much any way I please.

RESOURCES:

R

Ah, good old R. It's what statisticians use, and pretty much nobody else. Everyone else has it installed on their computer, but haven't gotten around to learning it. I use R for analysis. Sometimes though, I use it to extract useful subsets from a dataset if the conditions are more complex than those I'd use with MySQL and then export them as CSV files.

RESOURCES:

Microsoft Excel

We all know this one. I use Excel from time to time when my dataset is small or if I'm in a point-and-click mood.

Charts and Graphs


Alright, the data are processed, formatted, and ready to go. Now it's time to visualize. The software I use for static charts and graphs depends on the task at hand, so I try not to limit myself to anyone piece of software. For example, R is good for quick results, but no good for a Web application.

Adobe Illustrator

I use Adobe Illustrator for publication-level graphics. I learned how to use it when I was at The Times out of necessity and have been enjoying it since. You can manipulate every element of a graph with a simple click and a drag - which can be a blessing and a curse.

RESOURCES:

R

If you have a particular type of (non-animated, non-interactive) statistical visualization in mind, R has probably got it. R is free with countless libraries available. If you can't find a library to suit your needs, you can always script it yourself. One cool thing about R is that you can save your graphics as PDF and then polish it in Adobe Illustrator.

RESOURCES:

PHP Graphics Library

I've only had limited experience the the PHP GD library. There are several PHP graphing packages available, but I haven't found one that I liked a whole lot, so I'm usually more satisfied drawing my own graphs with the GD library. The Sparklines PHP graphing library isn't half bad either.

RESOURCES:

HTML + CSS + Javascript

You can surprisingly do quite a bit with some simple HTML and CSS. You can make graphs and of course tables as well as control colors and sizes. For example, a lot of the tag clouds you see on the Web are just HTML and CSS. Throw Javascript in to the mix and you've got yourself a party i.e. interaction capabilities.

RESOURCES:

Flash/Actionscript

Flash and Actionscript is better known for animating and moving data, but it can be used for static stuff too. It's pretty good if you want to add interaction to your visualization like highlighting or filtering. I've done some stuff from scratch and also played around with Flare, the Actionscript visualization toolkit.

RESOURCES:

Microsoft Excel

It's pretty rare that I use Excel for graphics. If I need something really quick though and the data are already in an Excel spreadsheet, I'll click that graph button.

RESOURCES:

Animating the Data

Twitter World

There are several options to create animated and interactive data visualization, but these are the only ones I use (and for the most part, dominate what you see on the Web).

Processing

Yeah, it's called Processing. I've seen mostly designers use it, but there's no reason it can't be used elsewhere. Processing uses a canvas metaphor where you draw and make sketches and then get a Java applet out of it. Processing was created to make programmatic goodness available to non-programmers.

RESOURCES:

Flash/Actionscript

Flash and Actionscript has been my point of interest lately – mostly because the Java applet is dead as far the Web is concerned. The interactive/animated visualization you see from places like The New York Times, Stamen Design, and web applications are usually implemented with Flash and Actionscript. Not sure if it's Flash? The tell tale sign is a simple right click on whatever you're looking at. Take a look at my previous post on How to Learn Actionscript for Data Visualization for more details.

10/07/2008

Perl Tip: Converting DOS to UNIX file format

It is as easy as changing all \r\n characters with \n to convert them to UNIX format. So, command line wise, this is all you have to do:
perl -pi -e 's/\r\n/\n/;' *.txt

9/23/2008

VIM: Visual block select with edit!

Within Vim, do following sequence to edit to be applied in highlighted virtual block:

Ctrl+v -> select block with cursor -> Shift+ -> enter edit val -> ESC -> done

For example, I would like to insert '//' comment line in front of all highlighted syntax:

Ctrl+v -> select block with cursor -> Shift+i -> type in '//' -> ESC -> done

Tada! Magic!

9/22/2008

Great reference sites to beef up your interview skills

Great listing put together by Mashables in 9 Sites for Successful Job Interviews
Quotes below:

InterviewUp - Is a mixture of a job board along with a community of people who share their interview experiences from different fields so that you can get a feel for what types of questions you may get when you go in, and what sort of answers work best.

About.com - With About.com’s ever growing catalog of articles on just about every subject, it’s not surprising they have a section dedicated to job interviews. They have suggested answers for numerous questions, tips on sending thank you letters, tips for your resume and more.

AceTheInterview - AceTheInterview is totally dedicated to about every aspect of the job hunt you can think of. Their interview section has important notes on things such as do’s & don’ts, the touchy area of salary negotiations, an interview checklist and more.

CareerBuilder - The popular mainstream job hunting site offers numerous tips on all aspects of the application and interview process, tips on marketing yourself, how to promote your hidden job skills and more.

CareerLab - Offers advice on what to do if you don’t get a job offer after multiple interviews, a cheat sheet to keep notes on your interview as well as what you wore so you don’t repeat an outfit, sample cover letters and more.

HotJobs - Yahoo’s job search site offers numerous tips on how to prepare, how to present yourself, follow up on the interview, even how to handle an interview over a meal, and more.

InterviewBest - Helps you come up with concise interview presentations that present your strong points and how you would benefit a company.

Monster - The well known job search site also offers quizzes you can use to see how ready you are for various aspects of your job hunt as well as a random job interview question generator.

QuintCareers - Is a site dedicated to preparing you for your job hunt with over 3,500 pages of free career advice. They have a large section dedicated to what to expect from the interview process and how best to prepare for it.

9/14/2008

More UNIX usage tips!

!$ operator returns the file_system_access.c argument, and the !:1 operator returns the kxp12.c argument, which is the first argument of the previous command.

$ mv kxp12.c file_system_access.c
$ ln –s !$ !:1

df command shows you the total number of blocks used on each available volume and the percentage of free space.

Use the find command with the -size parameter. Listing 7 shows how to use the find command to find files larger than 10MB. Note that the -size parameter takes a size in kilobytes.
$ find / -size +10000k –xdev –exec ls –lh {}\;

Make the most of regular expressions

Many UNIX commands use regular expressions as arguments. Technically speaking, a regular expression is a string (that is, a sequence of characters composed of letters, numbers, and symbols) that represents a pattern defining zero or more strings. A regular expression uses meta-characters (for example, the asterisk [*] and question mark [?] symbols) to match parts of or whole other strings. A regular expression doesn't have to contain wildcards, but wildcards can make regular expressions useful for searching for patterns and manipulating files. Table 1 shows some basic regular expression sequences.


Table 1. Regular expression sequences
SequenceDescription
Caret (^)Matches the expression at the start of a line, as in ^A
Question mark (?)Matches the expression at the end of a line, as in A?
Backslash (\)Turns off the special meaning of the next character, as in \^
Brackets ([])Matches any one of the enclosed characters, as in [aeiou] (Use a hyphen [-] for a range, as in [0-9].)
[^ ] Matches any one character except those enclosed in brackets, as in [^0-9]
Period (.)Matches a single character of any value except end of line
Asterisk (*)Matches zero or more of the preceding characters or expressions
\{x,y\} Matches x to y occurrences of the preceding
\{x\} Matches exactly x occurrences of the preceding
\{x,\} Matches x or more occurrences of the preceding

Listing 12 shows some of the basic regular expressions used with the grep command.


Listing 12. Using regular expressions with grep
               
$ # Lists your mail
$ grep '^From: ' /usr/mail/$USER
$ # Any line with at least one letter
$ grep '[a-zA-Z]' search-file.txt
$ # Anything not a letter or number
$ grep '[^a-zA-Z0-9] search-file.txt
$ # Find phone numbers in the form 999-9999
$ grep '[0-9]\{3\}-[0-9]\{4\}' search-file.txt
$ # Find lines with exactly one character
$ grep '^.$' search-file.txt
$ # Find any line that starts with a period "."
$ grep '^\.' search-file.txt
$ # Find lines that start with a "." and 2 lowercase letters
$ grep '^\.[a-z][a-z]' search-file.txt

Process data with awk

The awk command always seems to live in the shadows of Perl, but it can be a quick, useful tool for simple command-line-based data manipulation. Listing 15 shows how to get started with the awk command. To get the length of each line in the file text, use the length() function. To see if the string ing is present in the file text, use the index() function, which returns the location of the first occurrence of ing so that you can use it for further string processing. To tokenize (that is, split a line into word-length pieces) a string, use the split() function.


Listing 15. Basic awk processing
               
$ cat text
testing the awk command
$ awk '{ i = length($0); print i }' text
23
$ awk '{ i = index($0,”ing”); print i}' text
5
$ awk 'BEGIN { i = 1 } { n = split($0,a," "); while (i <= n) {print a[i]; i++;} }' text
testing
the
awk
command

Printing specified fields of text file is a simple awk task. In Listing 16, the sales file consists of each salesperson's name followed by a monthly sales figure. You can use the awk command to quickly total the sales for each month. By default, awk treats each comma-separated value as a different field. You use the $n operators to access each individual field.


Listing 16. Using awk for data summarization
               
$cat sales
Gene,12,23,7
Dawn,10,25,15
Renee,15,13,18
David,8,21,17
$ awk -F, '{print $1,$2+$3+$4}' sales
Gene 42
Dawn 50
Renee 46
David 46

9/12/2008

Perl Tip: Couple useful stuffs

$` $& $' before match after

\w - type words made up of ordinary letters, digits, and underscores.
\b - anchor matches at the start or end of a group of \w characters

redir all IO's (including STDOUT and STDERR) during command line execution or script execution:
(cmd) >& out

Perl Tip: Bundling options

Use this statement to 'bundle' the given options:

use Getopt::Long;
Getopt::Long::Configure("bundling");

This enables options of say -d and -e into -de bundling!

Perl Tip: Call variable based subroutines

Take off strict temporarily while you pipe it in the variable based subroutine calls.

{ no strict 'refs';
*{$ProdMod . "::Init"}->(\%Subroutines,$Debug);
}

$ProdMod is variable where subroutine call is call {$ProdMod."::Init"}. %Subroutines and $Debug are the input variables to the provided subroutine.

Also, can put it into hash or array which points to the subroutine calls as so:
my %Subs = (
"test1" => \&test1,
"test2" => \&test2,
"test3" => \&test3,
"test4" => \&test4,
);

And calls it:
$Subs{"test1"}($var1,$var2);

Considering you have test1-4 subroutine defined:
sub test1($$) {...}

9/11/2008

Cygwin Vi syntax enabling

Just create .vimrc file with following content:

   syntax enable
set sw=4 ts=4 et
set wildmenu

Not loading .bashrc in cygwin

Add this line in the end of '/etc/profile' file:

. "${HOME}/.bashrc"

Problem solved! Make sure $HOME is pointing to your home directory and you have .bashrc file generated.

[Update] Cygwin always load off of '.bash_profile' instead of '.bashrc' file. Thus, another solution is to do 'source ~/.bashrc' within '.bash_profile'. Or add the following line in '.bash_profile':

if [ -f ~/.bashrc ]
then
. ~/
.bashrc
fi

8/30/2008

How to control someone with negative response

Dealing with Difficult People can be very hard especially someone with negative emotion who is out to get you. But if you really find out deep down what he/she is doing is mostly about them, not you. Got this from ThinkSimpleNow.com. Enjoy.

Quote:

Why Bother Controlling Our Responses?

  • Hurting Ourselves - One of my favorite sayings is “Holding a grudge against someone is like drinking poison and expecting the other person to die.” The only person we hurt is ourselves. When we react to negativity, we are disturbing our inner space and mentally creating pain within ourselves.
  • It’s Not About You, It’s About Them - I’ve learned that when people initiate negativity, it is a reflection of their inner state expressed externally and you just happen to be in front of that expression. It’s not personal, so why do we take it personally? In short: Because our ego likes problems and conflict. People are often so bored and unhappy with their own lives that they want to take others down with them. There have been many times when a random person has left a purposefully hurtful comment on TSN, and regularly checked back to see if anyone else responded to their comment, waiting eagerly to respond with more negativity.
  • Battle of the Ego - When we respond impulsively, it is a natural and honest response. However, is it the smart thing to do? What can be resolved by doing so? The answer: Nothing. It does however feed our ego’s need for conflict. Have you noticed that when we fight back, it feels really satisfying in our heads? But it doesn’t feel very good in our soul? Our stomach becomes tight, and we start having violent thoughts? When we do respond irrationally, it turns the conversation from a one-sided negative expression into a battle of two egos. It becomes an unnecessary and unproductive battle for Who is Right?
  • Anger Feeds Anger. Negativity Feeds Negativity. - Rarely can any good come out of reacting against someone who is in a negative state. It will only trigger anger and an additional reactive response from that person. If we do respond impulsively, we’ll have invested energy in the defending of ourselves and we’ll feel more psychologically compelled to defend ourselves going forward. Have you noticed that the angrier our thoughts become, the angrier we become? It’s a negative downward spiral.
  • Waste of Energy - Where attention goes, energy flows. What we focus on tends to expand itself. Since we can only focus on one thing at a time, energy spent on negativity is energy that could have been spent on our personal wellbeing.
  • Negativity Spreads - I’ve found that once I allow negativity in one area of my life, it starts to subtly bleed into other areas as well. When we are in a negative state or holding a grudge against someone, we don’t feel very good. We carry that energy with us as we go about our day. When we don’t feel very good, we lose sight of clarity and may react unconsciously to matters in other areas of our lives, unnecessarily.
  • Freedom of Speech - People are as entitled to their opinions as you are. Allow them to express how they feel and let it be. Remember that it’s all relative and a matter of perspective. What we consider positive can be perceived by another as negative. When we react, it becomes me-versus-you, who is right? Some people may have a less than eloquent way of expressing themselves - it may even be offensive, but they are still entitled to do so. They have the right to express their own opinions and we have the right and will power to choose our responses. We can choose peace or we can choose conflict.

1. Forgive - What would the Dali Lama do if he was in the situation? He would most likely forgive. Remember that at our very core, we are good, but our judgment becomes clouded and we may say hurtful things. Ask yourself, “What is it about this situation or person that I can seek to understand and forgive?

2. Wait it Out - Sometimes I feel compelled to instantly send an email defending myself. I’ve learned that emotionally charged emails never get us the result we want; they only add oil to the fire. What is helpful is inserting time to allow ourselves to cool off. You can write the emotionally charged email to the person, just don’t send it off. Wait until you’ve cooled off before responding, if you choose to respond at all.

3. “Does it really matter if I am right?” - Sometimes we respond with the intention of defending the side we took a position on. If you find yourself arguing for the sake of being right, ask “Does it matter if I am right?” If yes, then ask “Why do I need to be right? What will I gain?

4. Don’t Respond - Many times when a person initiates a negative message or difficult attitude, they are trying to trigger a response from you. When we react, we are actually giving them what they want. Let’s stop the cycle of negative snowballing and sell them short on what they’re looking for; don’t bother responding.

5. Stop Talking About It - When you have a problem or a conflict in your life, don’t you find that people just love talking about it? We end up repeating the story to anyone who’ll listen. We express how much we hate the situation or person. What we fail to recognize in these moments is that the more we talk about something, the more of that thing we’ll notice. Example, the more we talk about how much we dislike a person, the more hate we will feel towards them and the more we’ll notice things about them that we dislike. Stop giving it energy, stop thinking about it, and stop talking about it. Do your best to not repeat the story to others.

6. Be In Their Shoes - As cliché as this may sound, we tend to forget that we become blind-sided in the situation. Try putting yourself in their position and consider how you may have hurt their feelings. This understanding will give you a new perspective on becoming rational again, and may help you develop compassion for the other person.

7. Look for the Lessons - No situation is ever lost if we can take away from it some lessons that will help us grow and become a better person. Regardless of how negative a scenario may appear, there is always a hidden gift in the form of a lesson. Find the lesson(s).

8. Choose to Eliminate Negative People In Your Life - Negative people can be a source of energy drain. And deeply unhappy people will want to bring you down emotionally, so that they are not down there alone. Be aware of this. Unless you have a lot of time on your hands and do not mind the energy drain, I recommend that you cut them off from your life. Cut them out by avoiding interactions with them as much as possible. Remember that you have the choice to commit to being surrounded by people who have the qualities you admire: optimistic, positive, peaceful and encouraging people. As Kathy Sierra said, “Be around the change you want to see in the world.”

9. Become the Observer - When we practice becoming the observer of our feelings, our thoughts and the situation, we separate ourselves away from the emotions. Instead of identifying with the emotions and letting them consume us, we observe them with clarity and detachment. When you find yourself identifying with emotions and thoughts, bring your focus on your breathe.

10. Go for a Run … or a swim, or some other workout. Physical exercise can help to release the negative and excess energy in us. Use exercise as a tool to clear your mind and release built up negative energy.

11. Worst Case Scenario - Ask yourself two questions, “If I do not respond, what is the worst thing that can result from it?“, “If I do respond, what is the worst thing that can result from it?” Answering these questions often adds perspectives to the situation, and you’ll realize that nothing good will come out of reacting. Your energy will be wasted, and your inner space disturbed.

12. Avoid Heated Discussions - When we’re emotionally charged, we are so much in our heads that we argue out of an impulse to be right, to defend ourselves, for the sake of our egos. Rationality and resolution can rarely arise out of these discussions. If a discussion is necessary, wait until everyone has cooled off before diving into one.

13. Most Important - List out things in your life most important to you. Then ask yourself, “Will a reaction to this person contribute to the things that matter most to me?

14. Pour Honey - This doesn’t always work, but sometimes catches people off guard when they’re trying to “Pour Poison” on you. Compliment the other person for something they did well, tell them you’ve learned something new through interacting with them, and maybe offer to become friends. Remember to be genuine. You might have to dig deep to find something that you appreciate about this person.

15. Express It - Take out some scrap paper and dump all the random and negative thoughts out of you by writing freely without editing. Continue to do so until you have nothing else to say. Now, roll the paper up into a ball, close your eyes and visualize that all the negative energy is now inside that paper ball. Toss the paper ball in the trash. Let it go!

8/25/2008

OnStartup's tip for public PR without help from PR firm

I love the list the is put together from OnStartups, Startup PR: Tips For Getting Publicity Without A PR Firm

Take a look yourself below in the quote.

1. “My philosophy of PR is summed up in six words: be amazing, be everywhere, be real.”

2. First time I’ve ever the heard of the term ceWebrities. clever. With regards to these ceWebrities, “these overnight successes are 10 years in the making.”.

3. “Be the brand…you must be in love with your brand and inspired by your brand’s mission to have any hope of getting press.”

4. “Be everywhere…every single night I would go out and meet folks in the internet industry…while other folks went home to their families, I went out and made a family.”

5. “Your job is to transfer the enthusiasm you feel for your brand to everyone you meet.”

6. “Always pick up the check — always…everyone remembers who picked up the check.

7. “Set a goal of creating deep relationships with a small number of folks as opposed to running around trying to trade business cards with as many folks as possible.”

8. “Be a human being. The best way to get PR is not to sell someone on your company or product — it’s by being a human being. Journalists hate being pitched…journalists and bloggers are, in fact, humans.”

9. “Before meeting with a journalist, it is your job (as CEO) to read their last five articles in full…”

10. “Your job as the CEO/founder is to create direct, honest and personal relationships with journalists.”

11. “Attach your brand to a movement.”

12. “PR is, by definition a reflection of what you’ve done. When a startup hits, it’s not one thing that does it, it’s typically many things working in concer.”

I'd summarize the advice and change the 6 words of advice to: Be amazing, be passionate, be human.

Use key words in your resume to get more attention in your job search!

Based on survey from careerbuilder.com, it is shown that these are what the future bosses are searching for in your resume:

Quote from Link:

* problem-solving and decision-making skills (50 percent)
* oral and written communications (44 percent)
* customer service or retention (34 percent)
* performance and productivity improvement (32 percent)
* leadership (30 percent)
* technology (27 percent)
* team-building (26 percent)
* project management (20 percent)
* bilingual (14 percent)

8/20/2008

Wii homebrew! Wii hack! Wii mod! Here it is!

Wii Homebrew is finally here and for the masses! Everyone can enjoy free games and homebrew as nicely laid out from lifehacker.com: Hack Your Wii for Homebrew Apps and DVD Playback

Quoted body:

What You'll Need

Since we're going to be doing a softmod of your Wii (i.e., we're not modifying any hardware), you don't really need much to accomplish this hack.


twilight-princess.png


NOTE: I'm doing this all on a Windows PC, but you can manually install the Twilight Hack if you don't have access to a Windows PC.


The secret sauce lies in the Twilight Princess game. Essentially, we're going to load a fake game into Twilight Princess that exploits a buffer overflow and allows you install homebrew software on your Wii.


Sound complicated? Figuring it out may have been, but the excellent Wii hackers have made exploiting the Twilight hack is a cinch.


Hacking Your Wii for Homebrew


00-format-disk.pngTo get started, plug your SD card into your computer. It needs to be formatted as a FAT16 filesystem, so find the SD card in My Computer and format it by right-clicking, selecting Format, and setting FAT as your file system. (If you have trouble formatting your SD card this way, try out the SD Card Formatter.)



Now it's time to prepare the SD card with the Twilight Hack. If you haven't already, download the Wii Brew SD Installer. When you've got it, make sure your SD card is plugged in and run the installer. The installer is fairly self-explanatory, but I'll walk you through it.


Choose Your Install Location



This should match the location of the SD card you just formatted above.

Select the Homebrew Features and Twilight Hack

Now you need to select the packages you want to install on your SD card (and, eventually, your Wii). I'd suggest selecting the Homebrew Channel (in fact, you need to if you want this to work), the Homebrew Browser, and DVDX (you'll need this last one for DVD playback). Make sure to select the Twilight Hack that matches your region. Hit Next and the Wii SD Installer will copy all the necessary files to your SD card.


Take Note of Your Twilight Princess Disc



If you're in the U.S., your copy of Twilight Princess is one of three different versions. One of the versions of the disc requires that you use a different save slot when we load the game later on, so just take note of the text on the inner circle of the bottom of the Twilight Princess game disc. (I needed TwilightHack2, for example.)


Perform the Twilight Hack on Your Wii

sd-card-in.pngBy this point, your SD card is officially prepared for your Wii. Unplug it from your computer and move over to your Wii. Plug it in and power up your Wii. At this point, you'll need to erase your current Twilight Princess saved game, copy the Twilight hack to your Wii, and execute it in Twilight Princess. (If you haven't played the game and created a save slot, you should do that before proceeding.) The video below from the WiiBrew folks details exactly how to do this.


NOTE: If the installation froze after you loaded the saved game and talked to the man, chances are you need to use the other saved game.



You'll need to accept a disclaimer and go through a few other screens to finish the installation (just use the 1 button on your Wiimote to accept). When it completes, head back to the Wii menu. The glorious new Wii Homebrew Channel awaits.


Turn Your Wii into a DVD Player



Now that you've got the Homebrew Channel installed, setting up DVD support is a breeze. Fire up your the Homebrew Channel from the main Wii menu and you should see the DVDx installer and Homebrew Browser. Click on the DVDx installer and run through the prompt. Hit A to select Normal install unless you've installed a modchip in your Wii. (If you're following this guide, chances are you don't have a modchip.) You've finished the first step.


Now you need to shut off your Wii and plug the SD card back into your computer, because it's time to install mplayer, the app that will play back DVDs on your Wii. You can download it from the HackMii web site at the bottom of this post. (Mplayer appears to be available in the Homebrew Browser, but it's not the version that supports DVD playback, so make sure you download it manually.)


After you've downloaded it, copy the entire mplayer folder to the apps folder on your SD card. Now just take the SD card back to your Wii, plug it in, and run the Homebrew Channel again. This time you should see mplayer next to your other installed apps, like below.



To play back a DVD, just fire up mplayer, insert a DVD, and select the Play DVD option in the mplayer menu. You'll notice two Play DVD menu items, the second of which reads Play DVD (libdvdnav). The libdvdnav attempts to use the built-in DVD menu, while the other just plays the first title. Unfortunately libdvdnav doesn't really work correctly with the Wiimote yet, but it looks to be on its way.



It takes a few seconds for mplayer to start playing the DVD, but once it does it plays without a hitch (or at least it has in all my experience). Thanks to YouTube, here's what it looks like:



The Wiimote/Gamecube controller playback shortcuts work as follows:

A - Pause
B - OSD
1/X - Toggle on screen menu
RIGHT - Seek 10s forward
LEFT - Seek 10s backward
UP - Seek 60s forward
DOWN - Seek 60s backward
+/R - Seek to the next chapter
-/L - Seek to the previous chapter
HOME/Z - Quit

Home server guide

If you are interested in utilizing your broad band high speed internet connection with your own server this is the guide that you want to take a look: Set Up a Home Server .

Quote below:

Introduction

Before You Start - Alternatives

Setting up a home server can be a lot of fun and a great learning experience. But, depending on what you want to use it for and how good your connection to the Internet is, a home server may not be the best alternative. If your aim is serving web pages reliably or otherwise delivering information outside your home to friends or customers, it makes more sense to put the server into "The Cloud" - in other words, in a commercial data center. This saves you the worry and hassle of keeping it running or dealing with interruptions to your home's power, cable or DSL service. "Cloud Computing," or renting just as much of a server as you need on an hourly or monthly basis, is becoming quite popular for web companies or growing businesses, but the rates are inexpensive enough that you should consider it as an alternative to a home server. There are many cloud computing companies, ranging from Amazon Web Services which requires that you learn their command line interface to initiate a new server, to ENKI which offers personal support for getting you up and running. This isn't the place to go into detail, but you can learn more by Googling "Cloud Computing."

What you'll need

To build your own server, you need just a few components, some or all of which you may well have already:

  • A computer
  • A broadband network connection
  • A network router, with Ethernet (CAT5) cable
  • A monitor and keyboard (just for the first few steps)
  • A CD/DVD drive/burner will be handy if you plan to use the server for media.

The computer

A server doesn't have to be particularly powerful. eBay runs on mega-thousand-dollar Sun computers, and Google uses thousands of machines to power its search. But for personal use, a server needs considerably less horsepower than your average desktop computer. While other computers busy themselves with complex tasks like despeckling photographs and calculating missile trajectories, your home server has a much simpler task: receiving requests for data and then sending that data as requested. Your server won't use much processing power, especially without a graphical interface to worry about. A machine with 64MB of RAM and a 300MHz processor can make a perfectly good server; with slightly more robust specs, it can handle almost anything you'll throw at it.

An old machine can be turned into a server with minimal effort. You may already have a perfect machine for the job sitting in your attic. Or a relative or a friend might want to get rid of her older desktop; or you may well be able to pick up a suitable model cheap or free from a swap meet, a classified ad, or online equivalents like freecycle.org and craigslist.org. Alternately, you can buy a new machine to use as your server. Each approach has its advantages.

The reasons you might not want to use an old machine include:

Old hardware can be unreliable. Sometimes replacing bad RAM or putting in a new heatsink will fix the problem, but sometimes a computer just crashes every few hours, regardless of what operating system is installed. Time to donate or recycle it.

Space is an issue. If the old machine is in a big tower case and you are in a small apartment, you might want to get it a new case -- or you might want to buy a new server that's one tenth the size.

You want it quiet. Computers get hot, so fans are installed to keep them cool. Fans are loud, even the ones marketed as "whisper-quiet." You might not notice that so much in an office setting, but when a server is left running 24 hours a day (as they should be), it becomes rather irritating to live with in close quarters. If you're going to be sharing a living space with your server, you may want to invest in a fanless machine.

You don't have an old computer on hand, and you live in a place where finding cheap, used hardware is difficult or expensive.

If any of the above apply, you can skip to the section titled Buying a server.


Repurposing a used computer

If you go the way of turning an older machine into a server, congratulations. If it's a particularly geriatric model, you might have a little work ahead of you to get it ready for its new assignment. Upgrading a couple of its parts will make it a powerhouse for years to come. You can find plenty of support, if you have questions about what connector goes where, on hardware-nerd sites like tomshardware.com and arstechnica.com. Or, if messing with wires and chips is too daunting, your local computer shop should do it for a minimal fee.

Architecture

What sort of computer you use -- i386, PowerPC, Gameboy -- matters surprisingly little. Linux and BSD, the preferable server operating systems, run on just about any architecture you care to install them on. The official list of chips on which Debian can run includes Intel x86, Motorola 680xx, Sun Sparc, Alpha, PowerPC, ARM, MIPS, HP PA, Intel 64-bit, and S/390 processors, with more in the testing phase. That covers the vast majority of consumer computers ever made. Buy a notebook (the paper kind) and label it My Server. Write down all the model numbers and details of the hardware you set up.

Memory

RAM is cheap these days, and more is generally better.


Storage

The hard drive is the heart of the server. If everything else dies, you can pull out the hard drive and put it in another (comparable) machine, and pick up right where you left off. Depending on how many slots your computer is built with, you might want to have one hard drive or a few. Bigger is better.

Hard drives continuously drop in price. Start fresh with a new one. If you're disposing of an old drive and replacing it with a new one, don't forget to securely delete any private information before you put it in the trash.

The innards of a hard drive spin around thousands of times per second, so it's very likely that the hard drive will be the first component of your server to fail, though you can generally count on a new drive for a few good years at least. Proper backup procedures are crucial; for now, if you have room in your server and in your budget, you may want to slot in a second or even third hard drive. Keeping secondary copies of data in another place -- even if that's just a second drive right next to the first one -- is the way to safeguard your data against hard drive failure.


Cooling

Since the server's going to be running all the time, you need to make sure it doesn't overheat. The machine you have might already be fine in that department, or it might not. If it crashes unexpectedly, or exhibits weird, unpredictable behavior, it may be getting too hot. There's software you can install to monitor the machine's temperature as it runs, and even set it up to e-mail you automatically if it's creeping into the danger zone on a hot day.

You can splurge on a wide variety of methods to keep the CPU and power supply cool, involving air, water, liquid nitrogen, and so on. You also may want to look into underclocking your processor. That makes it run slower (which is fine for a server, remember) but also cooler. If you're handy with solder, there are dozens of underclocking tutorials online for your particular chip type. Generally, though, setting up good airflow through the box is sufficient for most home servers, with some quality fans sensibly arranged to pull air in at one end of the case, direct it over the hot components, and push it out the other. Larger fans tend to be quieter than smaller models, all else being equal. If you're living with the server, you will want quiet fans, the quietest you can get.


Network

The server's also going to need an Ethernet card (also known as a network interface card, or NIC), and one that works with your chosen operating system. You can't go wrong with most cards (especially older models), but you'll definitely want to check the model number on linux-drivers.org or elsewhere on the web before buying a new one. Big brands like 3Com and D-Link are generally a good, reliable bet.

Buying a server

Alternately, you could buy a server. There are plenty of up-to-date guides on the web. You can use a standard desktop computers, which contain powerful, expensive, and hot Intel and AMD-brand chips. That's fine, but brands like Shuttle or Biostar, built on the mini-ITX or nano-ITX specification are smaller, cheaper, and cooler. These can fit in cigar boxes and run silently without fans, on low power. Complete systems using these chipsets can be bought from a variety of specialty retailers, including idotpc.com and mini-itx.com. You shouldn't have to spend more than a couple of hundred dollars for a serviceable system.

The Connection

Apart from that, any sort of connection will do. Super speed is not important (unless you're planning to stream videos to dozens of users). If you have a connection already (probably you do) you can continue to use it as normal. Just keep your server connected to the router. A static IP is not necessary, nor is a business-class connection.

Your choice of providers will vary depending on your area. If you have a choice, pick a provider that offers good, reliable speeds and makes its customers happy. Ask around, or search the web for the phrase "[provider] sucks" if you want to hear the worst. Some providers have very restrictive policies and prefer their users not to do things like build servers; others, like the excellent sonic.net, are thrilled to have adventurous users. The choice between cable, DSL, fiber, satellite, and so on is less important; after trying an assortment, you won't notice a significant difference unless you're streaming video or high-quality audio.

The Router

Get a reliable router. It can be wireless, if you want to connect other computers to it wirelessly, but plan on using a real old-fashioned cable between it and the server. A router is a pretty standard commodity these days; some may have extra features, but it's the basics, not the extras, that count. Again, looking at what other shoppers have liked, on a site like newegg.com, can be an excellent guideline.

The Monitor and Keyboard

If you have an old spare desktop, you may have a spare monitor and keyboard to go with it. Or you can use your current computer, if you're not using a laptop, and willing to switch back and forth while you get things set up. You'll only need these until you get your server up and running. A monitor and keyboard are very handy to have tucked away somewhere for future debugging and upgrading of the server, though.

Power

If you live in an area prone to power surges, rolling brownouts, or the like, or even if you don't, some sort of intermediary between your machine and the AC socket is a good idea. This can be as simple as a $10 surge suppressor (not just an extension cord) or an elaborate power conditioner with hours of battery backup.

Everything in Its Place

After your box is upgraded, you'll need to find a home for it. You'll want to keep a few practical considerations in mind.

  • Don't place it next to a heater, or in a sunbeam. Don't place it by an open window. Dust is a server's enemy too, so don't keep it under the bed.
  • Don't let people trip over the cords, or let pets chew on them.
  • With proper attention to cooling, your server should be quite quiet, but some people are sensitive to even the faintest hum. Especially if your server is not the noiseless variety, you might want it in a less-trafficked area. The website Silent PC Review has advice and hardware recommendations for avoiding the noise.
  • Putting it in a little closet is good, as long as there's enough airflow that the thing won't overheat. Make sure to place it on a hard surface so as not to block the air intakes, leave a few inches of space around it on all sides, and don't pile stuff on top of it.
  • Theft is another concern: keeping a shiny server right by the front door might not be the best idea.
  • A lot of your placement concerns may be dictated by your internet connection, since the server needs to be within a cord's reach of that. If you use a wireless router to share the connection with the rest of the house, that ought to be centrally located, and the server plugged directly into it, wherever it is.
  • It'll also need to be plugged into an electric outlet.
  • If you're going to be doing stuff like ripping CDs with the server, you'll want it conveniently placed for feeding discs in.

Suggested reading

What can you do with that server? Here are some projects:

Suggested readings

Survey of Cloud Computing Vendors