Ryan's In/Out Board


09 Jun 2014: A new release v3.2 is now available. This primarily fixes the clientzone fiunctionality which was not working as advertised. See documentation for full details.

31 Jan 2012: There was a bug on this page meaning the link to the demo was broken. This is fixed now. Sorry about that.

29 Mar 2011: A minor bug has been identified in v3.1. It means that any sorting is not kept intact when you change somebody's status by using the drop down in the status column. A fixed version is forthcoming but in the meantime a fix is detailed in the support forums (involves replacing 1 line of code).

26 Nov 2010: Version 3.1 is released today! New features in this version are:

  • The custom comments form can now be placed at the top or bottom of the page
  • The Estimated return field can optionally be a drop down selector
  • Any department filter remains applied when updating a person's status

29 Sep 2010: Version 3.0 has has been downloaded over 1000 times in the first 7 months. See news for details.


Support this project
Iterating image of ryansiob screenshots
Click the image above for more screenshots

Ryan's In/Out Board is a perl driven in/out board for small-medium size organisations that needs staff to be aware of other staff whereabouts. (It will work for larger organisations but it may be more cumbersome to use with larger numbers of staff).

  • Displays name,phone,status,comments and date/time for each staff member
  • Staff are able to quickly change their status by either clicking on their name or calling the main script with a "name" parameter.
  • Standard comments are provided (Lunch, Leave etc) but can be added to/replaced by any comment the user wishes.
  • With the aid of a cron job/scheduled task it will also clear all staff as OUT every night, without removing any comments they have entered.
  • It has a simple and clear interface and users can also search for the status of any staff member.
  • The generated page can be automatically refreshed at your chosen interval and status colours are defined by you.
  • It also displays staff internal phone numbers and you can use your own header and footer files.
  • Staff can be grouped into teams or departments. The resulting In/Out board can then be filtered by users to display just one team/department.

My department was going to spend a thousand dollars (with taxpayer money) to buy a software in/out board. I told them there's no way i couldn't come up with a better solution. it was harder than I thought, but then I found your product. Instead of hosting it on a costly server with a database, I have it running on an old (previously determined broken) Dell laptop with a Pentium M processor User comment



09 Jun 2014: version 3.2. released today!

New features in this version are:

  • Fixed clientzone setting so it works as promised. Also it now takes into account situations where the timezone difference means the date will need to change too.
26 Nov 2010: version 3.1. released today!

New features in this version are:

  • The custom comments form can now be placed at the top or bottom of the page
  • The Estimated return field can optionally be a drop down selector
  • Any department filter remains applied when updating a person's status

Again thanks to all those who fedback in the forums and suggested how RyansIOB could be improved.

29 Sep 2010 : version 3.0 hits 1000 downloads!

Version 3.0 has now been downloaded over 1000 times in it's first seven months. Whilst I appreciate that not everybody will have continued to use it, this many downloads is still a great milestone in a reasonably short time. When added together all versions of Ryan's In/Out board have been downloaded almost 10,000 times.

Particular thanks goes to all users who have fedback to help make RyansIOB better.

26 Feb 2010 :version 3.0 released

It's been a while coming but version 3.0 is today released. This is a significant update and upgrading will require a new config file. Any old config files (v2.3 and below) will not work and you should instead make your customisations to the new v3.0 config. Major changes are

  • The binary "in/out" statuses have been replaced with a range of statuses.
  • Default comments have been moved into the new status lists. Custom comments
    are still permitted.
  • Status can now be speficied as URL paramaters calling the script
  • The Status field is now a drop down which changes your status on select
    (javascript submit can be disabled)
  • $tablerow_fontfamily config option added
  • Optional setting to enable autodisplay of only a user's department if a
    username is displayed (e.g. they change their status)
02 Jul 2009 :Minor bug in v2.3

An issue has come to light where changing the $table_fontsize setting in the config file has no effect on the size of text in the table on display. This is due to a minor bug in the config file. A fixed release will be available later this week but if you feel brave enough you can make the edit yourself.

  1. Edit the following file
  2. Find the line that reads:
    print "<td style='";
    on my file that's line 242 (it's within "sub print_line")
  3. Replace that line with this one:
    print "<td style='font-size:$table_fontsize;";
    CORRECTION: print "<td style='font-size:$tablerow_fontsize;";
Jun 2009 :Delays to v3.0

Due to some personal issues I was unable to work on v3.0 very much. Thus it has been put back for the moment. I am hoping to resume work on it soon and will update here when I expect there to be a release

Feb 2009 : Planned version 3.0 release

I thought it would be a good idea to let you know about the planned next release - which will be version 3.0 and is planned for 2nd Quarter of 2009. Following user feedback - both here on sourceforge and through personal contact - these features are planned for version 3.0:

  • Provision for using something other than simply in/out for status. This will mean that a "one-click" in/out change button is provided for each person but also a quick change drop down containing the defined standard comments. Calling the main page with a username will activate the binary in/out change as it does now.
  • Revise the standard comments usage. The standard comments will defined with an "in" or "out" status. Choosing one will revert that person's status to in or out. e.g. If you are indicating that you are in a meeting the status remains "in", if you are indicating your are "working from home" - it becomes "out". The defnitions will remain configurable in the config file.
  • Inclusion of javascript. The above features will work better if the main page is "ajaxified". This means that selecting a status will update the page in the same way that clicking on your name does now. For those who prefer their web without javascript - you will be able to disable this but it will then require two clicks to update a user (one to select the comment and one to submit the form).
  • CSS layout: although this is tabular data - it's less easy for some screen readers to use because the table is used for layout. The new version will use definition lists to enable more accessible pages - but these will be adapted by CSS to present an identical layout to now for non-screenreader browsers. The existing table-based layout will remain as an option.
  • Show user's department option. This new option will allow you to display only the user's department when they view the script. Default will be to show all users. Note that user detection requires HTTP_AUTH to be used on the site.
Jan 2008 : Version 2.3 released
  • Email links now support multiple domains. Simply set $maildomain (in the config file) to your most common domain and enter all others as full e-mail addresses in the datafile.
    $maildomain = "yourdomain.com";
  • Fixed bug with JavaScript refresh code.
    Prior to version 2.2 if a user changed their status and then refreshed their browser prior to the autorefresh kicking in, their status would be reverted.
    To avoid this, some javascript was added to the routine called when a user changes their status. This javascript was being called before the datafile was written and thus - for large numbers of users - the refresh was calling the data from the previous copy of the datafile.
    This has been resolved in 2.3 by calling the javascript after the datafiles has been written. If you are using 2.2 it is important that you update ryansiob.pl accordingly or replace it with v2.3 (recommended).


There is a demo installation of Ryan's In/Out board for you to try out on this site. The demo shows off the customised header, estimated return drop down(new) and custom form at the top of the page(new) features.

Note that the comments have been disabled on the demo to alleviate spam. The data will be reset to defaults every hour on the hour as well.

updating from version 3.0

Because most of the changes in v3.1 were in ryansiob.config.pl you cannot just copy over your old one from v3.0. You will need to apply your settings to a v3.1. copy.

Updating from versions earlier than v2.2

If you are updating from v2.1.5 or lower then you will need to be aware of the new departments feature. Users can now be grouped into departments and teams and you can filter the board to show only the one the user chooses.

If you have all your staff/users in a single team then it's probably best to disable the department feature. To do this set the config option $ryansiob::use_dept to be 0 (zero).

If you are going to use departments there are a couple of things you need to change.

  1. Change your datafile to have a number at the end of each row
    alison|Alison|OUT|04 May / 17:34| - |Tuesday
    must become
    alison|Alison|OUT|04 May / 17:34| - |Tuesday|1
    where the 1 is her department number.
  2. Set the department names in the config file. Edit $ryansiob::dept_names to equal your list, remembering to keep "Every" as the first entry (this is team zero).

In addition to the departments feature the code has been written to be compatible with "use strict;". This means several of the global variables have changed. If you have tweaked your code at all - make sure your changes reflect the new names or you'll get a failed script. See ryansiob.config.pl for details of variable names.

Legal / Licence

Ryan's In/Out Board is Copyright (c) Ryan P. Cartwright 2001/2007 and is released under the terms of the "GNU General Public License".

Ryan's In/Out Board is provided "as is" and without any express or implied warranties, including, without limitation, the implied warranties of merchantability and fitness for a particular purpose.


Ryan's In/Out Board (RyansIOB) uses a simple text file as a database and thus requires nothing beyond the latest PERL and a web server capable of serving PERL cgi scripts. You will need:-

  • A web server (i.e. Apache, IIS)
  • Perl (5 or above)
  • The Date::EzDate module for Perl

Note to UK Users : If you use the CPAN shell to install Date-EzDate it may fail on the tests. There is an issue with Date-EzDate and 29 Feb 2004 if the timezone is GMT. This causes the Date-EzDate tests to fail but does not impeach on any other functionality of the module. Thus You can still install it manually - by-passing the tests - and it works fine ( I doubt anyone will be using Ryan's In/Out Board to check before 29 Feb 2004).

I have notified the author of Date-EzDate of this issue with the tests and he is working on it for the next version. To my knowledge this only affects GMT users. No longer applicable

Like its sister application Ryan's Electronic Diary Sheet, Ryan's In/Out Board was written (in my own time) as an attempt to largely to fulfill a need at my then employer but I have attempted to make it useable by other organisations.

Ryan's In/Out Board has been tested on Apache 1.3 and 2.0 running SuSE Linux (7.0 and above), Debian (Sarge and Etch). It has also been tested on Apache on Windows XP and 98, IIS on Windows XP and 2003, all running Active State's Activeperl.

I've also had a report of it running fine on a Mac OS-X servers and I see no reason why it won't work under other Unix like OS's.


The latest version of Ryan's In/Out Board is available via the sourceforge pages. That link will give you a list of all the available releases and also the sample header file.

Everything you need is included in the download follow the intructions in the readme to install and configure.


You can read the distributed ryansiobdoc.txt readme file. Alternatively it's available in ODF and PDF.


This is a summary of the changes made at each release of Ryan's In/Out Board

V3.1 - Nov 2010
Options for custom comments form at top of page and estimated return field as drop down.Department filters honoured during status updates.
V3.0 - Feb 2010
Status changed from binary to multiple options. Default comments removed. Status can be specified in URL. Font family added to tablerow. Optional setting to show only user's department by default now fully W3C compliant.
v2.3 - Jan 2008
E-mail links now supports multiple domains. Fixed bug with Javascript refresh section if user status is changed
v2.2 - May 2007
Departments added. Sorting by fields added. Code tidied - now
v2.1.5 - Aug 2006
Minor Update - the distributed allout.pl script had corrupted characters at the end - fixed now.
v2.1.4 - Jul 2006
Minor Update - config script bugfix - autorefresh meta tag was not always being printed
v2.1.3 - Jun 2006
Minor update - search script bugfix - all entries returned in place of results.
v2.1.2 - Mar 2006
Minor update - main script prints datafile read/write errors to web browser. Http headers tidied up. datafile entries now sorted alphabetically in the script
v2.1.1 - Nov 2005
Minor update - couple of typo's fixed.
v2.1 - Nov 2005
HTML config added, HTML cleaned up, Windows instructions enhanced.
v2.0-5a - Nov 2004
no change to actual scripts - just amended the requirements section in README document.
v2.0-5 - Oct 2004
ryansiob.search.pl bug fix - failed to return any web content if it failed to find a match.
v2.0-4 - Oct 2004
ryansiob.search.pl rewritten to tidy code and fix bugs.
v2.0-3 - Oct 2004
Files in archive were inadvertenly stored in DOS format, now in UNIX format
Minor bug fix for use of variable in void context
Envelope.gif now included in archive
v2.0-2 - Sep 2004
Minor bug fix - returns not being displayed
v2.0-1 - Sep 2004
Minor fixes to date function
v2.0 - Sep 2004
Renamed "Ryan's In/Out Board" from Whosin (legal reasons).
Added mail links facility
Amended selection box to automatically select current user
Added Estimated Return date field
Added Date format option
Added Client timezone option
v1.0 - Apr 2003
Full release version
v0.3 - Aug 2002
HTML output tidied up - showing header is now optional
v0.2 - Jul 2002
Initial release version
v0.1 - Jun 2002
Internal test version for my then employer


Sourceforge forums
There is a growing community of Ryan's In/Out Board users - not huge but it's there. To take part in this and get support from everyone involved please use the forum provided via Sourceforge. This also has some FAQ's and there's also a post in the open discussion forum for feature requests and future direction of Ryan's In/Out Board.
Windows & IIS
Please note that - although Ryan's In/Out Board will run fine on Windows servers and IIS. I do not use Windows or IIS and thus my support for that will be limited to any issue directly within Ryan's In/Out Board and not with Windows or IIS. Asking the forum for help may yield some success as there are a good few Windows/IIS users of Ryan's In/Out Board out there.

Thanks for your interest

If you do use Ryan's In/Out Board I'd appreciate you letting me know so I can keep an idea of how much it is used and therefore whether further development is worth it and what direction it should take. Many of the most recent additions and, of course, bug-fixes have come as a result of user feedback and it is a very valuable contribution - so thanks to all who feedback.

Thanks again for your interest in Ryan's In/Out Board

RyansIOB v3.2 released
09 Jun 2014 | Category: Software
Today sees the release of v3.2 of Ryan's In/Out board. Read on...
This website will be blacked out 18 Jan 2012
17 Jan 2012 | Category: General
As part of the protest against SOPA this website will be blacked out tomorrow ( 18 Jan 2012 ) GMT. Full details of why i am taking this step can be foun din my personal blog here Read on...
Encouraging the next generation of hackers
19 Dec 2011 | Category: Free software magazine
My latest article is now available at Free Software magazine. This is about the need to encourage the next generation of computer hackers (by which I mean programmers not criminals).
Read on...