Hello. I have a new blog.

I've moved this blog to the following URL Kerkness.ca. Thank you for visiting, please update your bookmarks.

Showing posts with label ubuntu. Show all posts
Showing posts with label ubuntu. Show all posts

Wednesday, May 14, 2008

Running Adobe Air for Linux on Ubuntu

If you know what an RIA is then you know what Adobe Air is. If you don't know what either of them are, then you really shouldn't need to read this post.

I need to find out what type of performance boost their is running a desktop Flex application as an Adobe Air application compared to running it using FireFox with Flash Player 9. So in order to do that I need to make sure I can get Adobe Air for Linux ( currently in Alpha ) working. I need to do this because my application needs to run off a linux desktop environment.

  1. First download Adobe Air for Linux runtime environment from the following link. You don't need to install the SDK unless you plan on developing Air applications using a linux desktop. I've started using OSX myself so I'm only going to install the runtime environment.

    http://labs.adobe.com/downloads/air_linux.html

  2. I moved my bin file to /usr/share/air and then changed the permissions.
    sudo mkdir /usr/share/air
    sudo mv adobeair_linux_al_******.bin
    chmod +x adobeair_linux_al_******.bin


  3. Then from the desktop go to Places > Computer > usr > share > air and double click on the bin file.

  4. Follow the prompts and you're done installing the runtime environment.

  5. Now let's see if we can get a fancy Air Application running. Go to the Sample application section at Adobe Labs and download an application that interests you. I downloaded Signet which gives you the ability to take your del.icio.us bookmarks to the desktop (whatever that means).

    http://labs.adobe.com/technologies/air/samples/

  6. When you click on the download link you should be presented with the option to open the link with the Adobe Air Application Installer. Choose OK and follow the prompts. Make sure to select the option to install an icon on your desktop so that the app will be easy to find once installed.
There you go. Go and explore the world of Adobe Air applications. Good times.

Thursday, May 8, 2008

Setting up a Kiosk Watchdog for your Ubuntu Blackbox Kiosk

Previously I put together a post which describes how to build a Kiosk computer using Ubuntu, Blackbox and Firefox. I'm following that up with details on how to monitor the kiosk so that you can be notified when/if the computer or services fail. I'll break this post into two sections.

1) Monitoring the computer services and network
2) Monitoring FireFox performance

Monitoring the computer services and network

Because our Kiosk computer is an Ubuntu server and running apache/php/mysql locally there are several open source network and service monitoring programs. The one I found most suitable for my solution is called Monit and I found a very good post at Ubuntu Geek describing how to install monit on ubuntu and configure it. I basically followed the Ubuntu Geek tutorial but made some modifications to the config file. My revised process is below.

  1. Install Monit
    sudo apt-get install monit
  2. Configure Monit. Open /etc/monit/monitrc in your favorite text editor. Below is an example of how I set up my own configuration file. It should be pretty self explanatory.
    ## Start monit in background (run as daemon) and check the services at 2-minute
    ## intervals.
    set daemon 120

    ## Set syslog logging with the 'daemon' facility.
    set logfile syslog facility log_daemon

    ## Set list of mailservers for alert delivery.
    ## I use my ISP's SMTP server for better reliability and means
    ## I don't need an smtp server running on my Kiosk
    set mailserver mail.shawcable.com

    ## Use event queue if mailserver unavailable
    set eventqueue
    basedir /var/monit # set the base directory where events will be stored
    slots 100 # optionaly limit the queue size

    ## You can set the alert recipient here
    set alert someone@domain.com

    # Monitor Apache
    check process apache2 with pidfile /var/run/apache2.pid

    # Action to be taken when apache fails
    start program = "/etc/init.d/apache2 start"
    stop program = "/etc/init.d/apache2 start"
    # Admin will notify by mail if below the condition satisfied below
    if cpu is greater than 60% for 2 cycles then alert
    if cpu > 60% for 5 cycles then restart
    if children > 10 then alert
    if children > 50 then restart
    if loadavg(5min) greater than 10 for 8 cycles then stop
    if 3 restarts within 5 cycles then timeout
    group servers

    # Monitor MySQL
    check process mysql with pidfile /var/run/mysqld/mysqld.pid
    group database
    start program = "/etc/init.d/mysql start"
    stop program = "/etc/init.d/mysql stop"
    if failed host 127.0.0.1 port 3306 then restart
    if failed host 127.0.0.1 port 3306 then alert
    if 5 restarts within 5 cycles then timeout

    # Monitor SSH Service
    check process sshd with pidfile /var/run/sshd.pid
    start program = "/etc/init.d/ssh start"
    stop program = "/etc/init.d/ssh stop"
    if failed port 22 protocol ssh then restart
    if failed port 22 protocol ssh then alert
    if 5 restarts within 5 cycles then timeout
    group programs

    # Check services
    check system localhost
    if loadavg (1min) > 4 then alert
    if loadavg (5min) > 2 then alert
    if memory usage > 75% then alert
    if cpu usage (user) > 70% then alert
    if cpu usage (system) > 80% then alert
    if cpu usage (wait) > 20% then alert
  3. Set Monit to start automagically. Open the file /etc/default/monit and change the startup value to 1. You can now start monit with the following command.
    sudo /etc/init.d/monit start
If you want to be able to access Monit's web based interface remotely then check out the Ubuntu Geek tutorial for more information. I am not enabling this ability in my kiosk at present.

Monitoring FireFox performance


By using Monit we are able to get good alerts regarding the overall health of our Kiosk. But Monit doesn't tell us is how our Kiosk client (Firefox) is behaving. If Firefox starts to eat up a percentage of your kiosk's available memory or CPU power you should be notified early.

I myself am not that great at building BASH scripts so I opted to create a PHP script which tests a few conditions and sends an email if Firefox isn't running or is using too many resources. This script can be run as a cron job every few minutes. My PHP script requires the open source class PHPMailer which makes sending email from PHP a snap.

Here is my php script.
 /**
* This script gets the CPU and MEM usage of Firefox
*/
$cpu = 0;
$mem = 0;
$failed = false;

// Get the PID of firefox
$pid = exec('pidof firefox-bin');

// If firefox is running get memory
if ( $pid )
{
$status_str = exec('ps aux | grep "'. $pid .'" | grep -v grep');
$status = explode( ' ', $status_str );
// Strip blanks
foreach( $status as $k=>$v )
{
if ( trim($v) == '' ) unset($status[$k]);
}
$status = array_values($status);

$cpu = $status[2];
$mem = $status[3];

if ( $cpu >= 60 || $mem >= 60 )
{
$failed = true;
$message = "Firefox is using $cpu% of CPU and $mem% of MEM";
}

} else {

// Firefox is not running
$failed = true;
$message = "Firefox is NOT running";

}

if ( $failed )
{
$body = date('l jS \of F Y h:i:s A',time() )."\n\n";
$body .= $message;

// Create and Send Email
require_once( "/class/phpmailer/class.phpmailer.php");

$mail = new PHPMailer();
$mail->From = ' firefox@mykiosk ';
$mail->FromName = " Firefox Status ";
$mail->Host = 'mail.shawcable.com';
$mail->Mailer = "smtp";

$mail->Subject = "Firefox Issue on ArtTouch";
$mail->AddAddress(" someone@domain.com ");

$mail->IsHtml(0);
$mail->Body = $body;

// LOG RESULTS
if(! $mail->Send() ) {
error_log("There was an error ending Firefox Performance Alert " . $mail->ErrorInfo );
}
}
If anyone wants to turn this into a bash script instead of PHP and share it that would be great.

Wednesday, May 7, 2008

Accessing Ubuntu Gnome Applications from Mac OSX without using a Remote Desktop

99% of the work I do is done on an Ubuntu server but I'm not always using an Ubuntu desktop. Recently I just bought myself a nice 24" iMac to use as my main workstation. Most of the time when I need to do something on the Ubuntu server I just open a terminal use ssh. However sometimes I find this approach a little cumbersome. When making large edits to config files on the server I find using a terminal based text editor to be a pain in the ass. Lucky for me there are a few ways to remotely access an Ubuntu desktop.

The most common approach is to use a VNC client. For Mac OSX there is a client called Chicken which seems to be the most popular. This approach is easy to set up but for me I found it to be dreadfully slow and requires that the user is already logged onto the server.

Using X11 to access Gnome Applications on a Remote Ubuntu Server

The process which I've found to suit my needs to a tea, is using the X11 utility which comes with Leopard and can be easily installed in Tiger or Panther. Here is an example of how to log into a remote Ubuntu server and use gEdit to modify a text file. It works really fast and doesn't require a complete remote desktop type solution.

  1. Start up an X11 terminal. You can find it at Applications > Utilities > X11

  2. Use SSH to log into the remote Ubuntu machine using the -Y option
    ssh -Y user@192.168.1.3
  3. Use a terminal command to open a file in gEdit
    sudo gedit /etc/php5/apache2/php.ini
  4. Make changes to the file and close gEdit using the menu File > Quit
UPDATE:
I can confirm that at least with Leopard you don't need to start by opening an X11 terminal. You can log into the remote server using your default OSX Terminal as long as you use the Y option OSX will automatically start x11 when you try and launch a Gnome application.

Nice!

Wednesday, April 16, 2008

Upgrading to FlexBuilder Linux Alpha 3 on Ubuntu 7.10 after Flexbuilder Alpha 2 expires

This post is probably a month overdue but I've been working on a Mac OSX workstation for the last month ( my Dad has a nice new Mac so while he was on vacation I used his computer ). Anyway, my dad came back so I moved back to my trusty Ubuntu workstation at my own desk. To my surprise the Alpha version of the Adobe Flex Builder Linux had expired. I have licensed copies for Flex Builder for both Windows and Mac but there is no release for Linux yet so I'm left using alpha versions.

The good news is that if your copy of Flex Builder Alpha 2 has expired (which I think everyone's did on March 15th) all you need to do is uninstall Flex Builder Alpha 2 and install Flex Builder Alpha 3. There are some new requirements however which makes this process a little more complicated if you're running Ubuntu. Mainly, Flex Builder Alpha 3 requires Eclipse 3.3 and the version of Eclipse which can be installed from Ubuntu repository is only version 3.2

So here are the steps you need to follow if you want to get Flex Builder Alpha 3 installed on Ubuntu after Flex Builder Alpha 2 has expired. Instead of writing a full howto I'm going to link you to the different blogs/pages which have the instructions you'll need.

  1. (Optional) If you haven't already upgraded to Ubuntu 7.10 now would be a good time. I was running Fiesty Fawn (which is 7.04 I think). View this link to get that done.

  2. Next you need to install Eclipse 3.3 on your system. Follow the instructions at this link but be insure to install 3.3 to a different location than 3.2. After you have 3.3 running you can copy the contents to the eclipse folder to the location where you have 3.2 installed. Mine was located at ~/.eclipse

  3. Before installing Flex Builder Alpha 3 you'll need to uninstall Flex Builder Alpha 2. To do this you need to run the script Uninstall_Adobe_Flex_Builder_Linux. This will be located in the directory Uninstall Adobe_Flex_Builder_Linux which in turn exists in the Flex Builder Linux installation directory. For full details see the Uninstall section of the release notes for alpha 3.

  4. Download Flex Builder Alpha 3

  5. Open your terminal and run the downloaded .bin file. For me I typed the following.
    cd /home/ryan/Desktop
    sh flexbuilder_linux_install_a3_033108.bin
    Follow the onscreen instructions.

  6. When finished you should be able to fire up Alpha 3. You may find that you get an error when opening older project files saying that the file is out of sync. Just right-click on the project and select the 'Refresh' option.

  7. If you need to add a launcher for the Flex Builder Alpha 3 program, the default location of the command to launch the program is
    /home/ryan/Adobe_Flex_Builder_Linux/Adobe_Flex_builder.sh
    Assuming of course that you're user name is 'ryan' like mine is.

Sunday, April 13, 2008

Setting up a PHP IDE for Ubuntu 7.10

I'm just posting this so that I have a record of it. I found myself building a new workstation at home and found this info scattered across several blogs when I looked for a refresher on setting up everything I normally use.

First step. Install Eclipse.

sudo apt-get install eclipse
sudo apt-get install sun-java6-jre
sudo update-java-alternatives -s java-6-sun

Next install PHPEclipse. you can go to Help > Software Updates > Find and Install and install new features located at the following URL
http://phpeclipse.sourceforge.net/update/releases

Finally. Install the RSE (remote system explorer) Plug In so you can easily access a remote Unix server and edit files willy-nilly. Note you don't need to install everything in the TM project.
http://download.eclipse.org/dsdp/tm/updates/

Wednesday, April 9, 2008

Creating a Touch Screen Kiosk using Firefox, Ubuntu and Blackbox

Several of the components and posts on this web site have revolved around a business project I've been working on which involves creating a touch screen kiosk for use in a public space. I thought it might be beneficial (at least from my own documenting needs) to provide a post covering the overall process of getting a secure touch screen system up running.

The easiest way to build a kiosk application is to customize a web page to serve as the kiosk interface. Launch the web page in a browser and set the browser to run in full screen mode and voila, instant kiosk. To turn it into a touch screen kiosk all you need to do is buy an LCD touch screen monitor and your all set.

This basic solution might work fine if you're always standing next to the computer and can enable full screen mode every time it reboots and also stop anyone from mucking around with your computer should the browser crash and they get access to the desktop.

Setting up a kiosk which can run in a public space and have reasonable enough security to prevent someone from mucking around with it should the browser crash or computer crash takes a little more thought.

I've addressed the overall solution in two parts.

1) The server/host computer
2) The browser

1) The Server / Host Computer

The computer used to host a touch screen application needs some thoughtful consideration. You want something that will offer good reliable performance and also prevent anyone who might be feeling a little malicious from causing the computer or your application any harm. My touch screen system does NOT have a keyboard attached to it which certainly helps in providing a certain level of security but I still need to take steps to make sure the user cannot get access to the desktop, general file system or any application other than the Firefox browser.

For my solution I decided to run Ubuntu 7.10 and use Blackbox as the default desktop environment. Ubuntu allows me to run an apache http server as well as mysql locally. This keeps the application running very fast, provides me with dynamic data and requires no internet connection. Your kiosk application could be simple straight HTML running locally or running off a remote web server whatever suits your needs. Using Ubuntu (or really any flavor of linux you're comfortable with) keeps your kiosk highly customizable.

Using the Blackbox windows manager instead of the default Gnome or KDE desktop environment allows me to lockout the user from accessing anything other than Firefox and keeps your kiosk as a light weight, fast computer with a single focus.

How to set up the server/host computer

  1. Download and install Ubuntu 7.10
    A default install is fine. The main user you will create during install will be considered a super user. You'll later create a user account specifically for accessing the touch screen application. Click here to get Ubuntu

  2. Install Apache, PHP5 and MySQL (Optional)
    My specific application uses dynamic data and requires both Apache and PHP. Using an Ubuntu computer makes it easy to run these services locally and means my computer doesn't require a dedicated internet connection. Although having one makes remote administration and updates easier. To install these on the computer just reference the UbuntuGuide.org wiki

  3. Create a limited user account
    While your touch screen application is running you'll want to have a limited user account logged into the computer.

    To create this account log into Ubuntu using the account you created during install and select :

    System > Administration > Users and Groups

    From the User settings window select:

    Add User

    From the New User Account window fill in the Basic Settings for your user. For the purpose of this example we will use the username: touchuser. After you've provided a user name and and password select the User Privileges tab. Unselect all options which are not a requirement of your touch screen application. For my application I blocked access to all external hard drives, cdroms, floppies and log monitors.

  4. Install Blackbox Window Manager
    Blackbox is a fast, lightweight and minimal windows manager for the X Window System. You can learn more about it here. Blackbox will be setup as the default desktop for our host computer. I use Blackbox because it helps prevent the touch screen user from having access to any applications unless they are specifically enabled via Blackbox.

    To install blackbox open up the terminal and type the following command.
    sudo apt-get install blackbox blackbox-themes
    Next we need to create a .blackboxrc file and a .blackbox directory. These will be used to define our configuration settings for our desktop and define what applications touchuser has access to. Note: we are going to do this in the home directory of the touchuser account not the account we are logged in as. After we create the file and directory we set permissions on them.
    sudo mkdir /home/touchuser/.blackbox
    sudo touch /home/touchuser/.blackboxrc
    sudo chown touchuser /home/touchuser/.blackbox
    sudo chown touchuser /home/touchuser/.blackboxrc
    sudo chgrp touchuser /home/touchuser/.blackbox
    sudo chgrp touchuser /home/touchuser/.blackboxrc
  5. Define the .blackboxrc File
    Using your favorite text editor add the following definitions to the .blackboxrc file. Note the reference to /home/touchuser/.blackbox/menu. This file will be created in the next step.
  6. session.styleFile: /usr/share/blackbox/styles/Gray
    session.menuFile: /home/touchuser/.blackbox/menu
    session.screen0.workspaces: 1
    session.screen0.workspaceNames: My Touch Screen
    session.fullMaximization: True

    NOTE: If you decide to run Blackbox now you may find yourself unable to complete the rest of the steps in this tutorial. All the steps for setting up the host computer assume you are logged into Ubuntu using the user created during install and running a Gnome session. If you're logged into Blackbox press CTRL + ALT + BACKSPACE to return to the Ubuntu login screen. You can select the 'options' button to change what windows manager is used when you log in.

  7. Create the Blackbox menu file
    By default the Blackbox desktop provides no icons. To launch a program the user needs to right-click on the desktop to see a menu of available applications. We want to provide our own menu settings so that the only application available to our user is Firefox. This is really only of limited use as right-clicking on a touch screen is impossible as far as I know, but in case someone figures out how to do it we don't want them to have access to anything other than the browser.

    Enter the following commands into the terminal to create the menu file and set appropriate permissions.
    sudo touch /home/touchuser/.blackbox/menu
    sudo chgrp touchuser /home/touchuser/.blackbox/menu
    sudo chown touchuser /home/touchuser/.blackbox/menu
    To limit our menu to only provide access to Firefox open up the menu file and add the following.
    [begin] (ArtTouch)
    [exec] (firefox) {firefox}
    [end]
    For more details on configuring blackbox and creating menus see the blackbox wiki

  8. Install iDesk
    Blackbox doesn't by default support desktop icons which is okay since we are building a minimal system. Well what if the Firefox browser crashes and the touch screen user is left starting at an empty desktop with no ability to right-click and relaunch the browser. To provide a solution to this problem we are going to install iDesk which adds icon support to minimal window managers such as Blackbox.

    To install iDesk open a terminal and provide the following command
    sudo apt-get install idesk
    Once iDesk is installed we need to create an .ideskrc file for configuration settings and create an .idesktop folder where we can define our icons.
    sudo touch /home/touchuser/.ideskrc
    sudo mkdir /home/touchuser/.idesktop
    sudo chgrp touchuser /home/touchuser/.ideskrc
    sudo chgrp touchuser /home/touchuser/.idesktop
    sudo chown touchuser /home/touchuser/.ideskrc
    sudo chown touchuser /home/touchuser/.idesktop
    Next open up the .ideskrc file and add the following
    table Config
    Background.Color: #C2CCFF
    end
    table Actions
    Execute[0]: left singleClk
    end
    This is a very minimal use of iDesk configuration options for more see the iDesk Usage Wiki

  9. Create an Icon and define icon commands
    Next we need to create an icon for our desktop. You could use the standard Firefox icon but you're probably best to create a PNG specifically for your touch screen application. Create a PNG file (for example touchicon.png) and stick it in the .idesktop directory. To add the icon to the desktop we need to create a file with a .lnk extension and place it in the .desktop directory also.
    sudo touch /home/touchuser/.idesktop/touchicon.lnk
    sudo chown touchuser /home/touchuser/.idesktop/touchicon.lnk
    sudo chgrp touchuser /home/touchuser/.idesktop/touchicon.lnk
    Open the touchicon.lnk file and add the following. Adjust 'caption', 'tooltip', 'width', 'height' and 'x/y' coordinates to suit your needs.
    table Icon
    Caption: Touch Application
    ToolTip.Caption: Touch Me To Launch
    Command: firefox
    Icon: /home/touchuser/.idesktop/touchicon.png
    Width: 400
    Height: 275
    X: 100
    Y: 100
    end
  10. Create Blackbox startup script
    Now that we have a minimal desktop and we also have an icon for our desktop we need to make sure that iDesk is automatically run when Blackbox runs (by default it doesn't). To do this we are going to create a startup script for Blackbox.

    Create a file called .bbstartup.sh in your touchuser's home directory
    sudo touch /home/touchuser/.bbstartup.sh
    sudo chgrp touchuser /home/touchuser/.bbstartup.sh
    sudo chown touchuser /home/touchuser/.bbstartup.sh
    sudo chmod x+ /home/touchuser/.bbstartup.sh
    Add the following to the .bbstartup.sh file
    #!/bin/sh
    idesk &
    exec blackbox
    Now we need to change the path of exec blackbox in /usr/share/xsessions/blackbox.desktop. Start by making a backup
    sudo cp /usr/share/xsessions/blackbox.desktop /usr/share/xsessions/blackbox.desktop_backup
    Edit /usr/share/xsessions/blackbox.desktop and make the following changes to Exec and TryExec definitions
    [Desktop Entry]
    Encoding=UTF-8
    Name=BlackBox
    Comment=Highly configurable and low resource X11 Window manager
    Exec=/home/touchuser/.bbstartup.sh
    Terminal=False
    TryExec=/home/touchuser/.bbstartup.sh
    Type=Application
  11. Set Auto-login and define Blackbox as default window manager
    The final step in configuring our server/host computer is to set up Ubuntu to automatically log into our touchuser profile and to use Blackbox as the default windows manager. This ensures that if the computer crashes or reboots that it immediately goes into kiosk mode. (note we'll further improve this by making the browser automatically launch later).

    Open the Login Window Preferences by selecting:

    System > Administration > Login Window

    Under the General tab select 'Blackbox' for default session.
    Under the Security tab select 'Enable automatic login' and select the user 'touchuser'
Hopefully after all that you should now have a basic set up to run a kiosk. When the computer boots it should load directly to a Blackbox desktop that allows the user to launch Firefox and only Firefox. In the next step of the process we are going to modify a few settings in Firefox to make sure it loads our touch screen application as it's homepage and automatically launches in full screen mode when the computer boots up.

NOTE: If the computer is running in kiosk mode and you want to be able to login as your super user and get back to a fully functional Gnome desktop all you need to do is plug in a keyboard and press CTRL + ALT + BACKSPACE. This will kill the Blackbox session and bring you to the Ubuntu login screen.

2) The Browser

Now that we have our host computer set up and running we'll want to make a few small changes to the preferences of our Firefox browser so that it performs well as a kiosk client.
  1. Set the Home Page
    This should be pretty obvious. When the browser launches we want it to automatically load our Kiosk application. For my solution I have the Kiosk application running locally as a Flex/PHP application. Your kiosk doesn't have to be Flex, it could be a Flash or simple HTML web page and it could be running remotely or locally. Whatever the case may be you'll want to set the URL location of your application as the homepage for Firefox.

  2. Disabling session restore
    When Firefox crashes or the computer is shutdown before closing the browser, Firefox will by default ask if you want to restore your previous session or start a new one the next time it launches. This is kind of a pointless feature for the kiosk as you'll likely always want it to start a new session. You can disable this feature by logging into your kiosk as 'touchuser' launching Firefox and entering 'about:config' in address bar.

    Find the preference settings for browser.sessionstore.resume_from_crash and browser.sessionstore.resume_session_once and set their values to false.

  3. Getting the browser to automatically launch in fullscreen mode.
    When the browser is launched in order to provide a true kiosk type environment we want it to load in full screen mode giving the user no access to the navigation bar and locked out of most shortcuts. The easiest way to do this is to install one of the many 'Full Screen' extensions available for Firefox.

    The one I recommend is R-Kiosk. For the pure purpose of running a web based Kiosk it does a very good job. While logged in as 'touchuser' Visit this link in Firefox and click the 'Add To Firefox' button.

    NOTE: After this component is added to Firefox you'll be unable to make any preference or configuration changes to Firefox unless you launch it in safe mode. For information on how to run Firefox in safe mode, visit this link.

  4. Setting the browser to automatically launch after boot
    When our kiosk system is booted it will automatically login as with the touchuser profile and load our Blackbox desktop. Now we also want Firefox to automatically launch so that after the system boots the user is presented with our Kiosk application running in all it's full screen glory.

    This is very simple to accomplish by adding one line to the Blackbox startup script we created in step 9 when setting up the host computer. You'll need to log into Ubuntu as the user you defined during install for this step.

    Open /user/touchuser/.bbstartup and add the following line
    #!/bin/sh
    idesk &
    /usr/bin/firefox &
    exec blackbox

If everything has gone as I hope, you should have a fully functioning kiosk system. The only thing left to do is buy yourself a fancy touchscreen LCD monitor and plug it in.

References for this setup can be found at the following links.
HOWTO: A Blackbox Guide
Blackbox Wiki
iDesk Wiki