Ryan's electronic diary sheet


Support This ProjectRyan's Electronic Diary Sheet (aka RyansEDS) is a web-based Perl application which allows members of an organisation (typically staff) to inform each other of their proposed whereabouts. It is designed to be a simple shared calendaring application which does require complex (and often proprietary) client/server software.

The diary sheet works on a week by week basis and stores its data accordingly. A shell script (bacth file) is supplied which (when run as a scheduled event/cron job) will clear out data older that your chosen limit. Thus data storage is kept to a minimum. The diary sheet itself also has a feature will prevent users from going too far forward or backward.

Click the image above to see more screenshots

Main features are:

  • Simple to use and administer
  • Week to a screen view
  • Users can be grouped into (colour coded) departments - current user's department shown at top
  • User aliases permit users to have friendly names on the diary sheet whilst logging in with more secure names 1
  • No database required - uses simple text files for storage
  • Tidies up after itself - deletes old storage files 2.
  • No client application required - save for a web browser
  • Easily configurable styles - all through the config file no HTML/CSS skills required.
  • Allows additional comments/notes to be linked from the main diary sheet view
  • Cross platform - runs on any browser and a range of server OSs.
  • W3C compliant and fully accessible HTML output
  • Suitable for small-medium installations (< 100 users)

Ryan's Electronic Diary Sheet has been tested on Linux (Debian, SuSE) running Apache 2.x . I see no reason why it won't run on Windows, MacOSX or other Unices running different webserver software.

1. RyansEDS uses the REMOTE_USER http environment variable to detect users. Thus if it is hosted on a secure intranet whereby users log into the site, the diary sheet scripts will detect the user they logged in as and use the aliases to map them to the relevant RyansEDS user if required. RyansEDS itself does not require people to login and contains no such security features. I assume that site security is handled as part of the site it is hosted on.

2. A script is supplied to do this - if this script is run as cron job or scheduled task, it will be performed regularly.


April 2007 : Version 1.2.1 released! : There was a minor bug that has been fixed regarding remote user detection routine. This meant a user logging in as Fred was being incorrectly detected as another user with an alias of Fred_Jones.

As before there is a special version for Windows. This is due to the older version of Date-EzDate available for that platform compared with other OSes.

Note that although the previous release was 1.2 - some of the files may have inadvertently stated they were v1.3 . V1.3 has not yet been released. The latest version of this software is as above 1.2.1 .


Ryan's Electronic Diary Sheet is copyright (c) 2006 Ryan P. Cartwright
Ryan's Electronic Diary Sheet is released under the terms of the "GNU General Public License (GPL)" (v2 and up).
Ryan's Electronic Diary Sheet 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 Electronic Diary Sheet requires no database software or client software beyond a web browser. It requires a web server to serve the Perl files as CGI and storage space for the data files. A typical installation requires about 4Mb of storage space for a year.

Base requirements for the server are:

  • Webserver - i.e. Apache, IIS
  • Perl - 5.0 and above
  • Date::EzDate - a perl module required for date handling.

Note that RyansEDS uses functionality from Date-EzDate 1.05. The latest version on Windows is 1.04 and so those deploying on Windows servers will need to use the special Windows version of RyansEDS which allows for that. Other OSes can use the standard RyansEDS version which employs all the functions from Date-EzDate 1.05 and above.

Why RyansEDS?

Like its sister application Ryan's In/Out Board, Ryan's Electronic Diary Sheet was written largely to fulfil a need at my then employer. Staff needed a simple centralised way to let each other know when they would be out of the office rather than get into the complexities of sharing calendars.

It may seem to you that there is no real need for something like RyansEDS, especially considering that it presents yet another form for users to fill in in order to share info. In light of the group-ware client/server applications that exist to share calendaring information it may seem that RyansEDS is, well, a little basic (i.e it doesn't link in with a PIM client such as Microsoft Outlook).


So why write such an application?

The simple answer is because it met a need at my then employer and I suspect it may meet a similar need in many other small (and larger) organisations.

Upon joining the organisation, one of my tasks was to upgrade the ageing fileserver, another task was to produce an Intranet. I started looking down the proprietary route ( okay let's name names - Microsoft Exchange ) and found the licence costs outside of budget. On consulting users and doing some research I found the features we actually wanted from Exchange were mail, out of office auto-replies, an in-out board and shared calendars.

Happy that I could provide the first two via Exim and having written Ryan's In/Out Board to provide the third, I started to consider the shared calendar options.

At the time there were no open source groupware applications but I didn't want to install (read "pay for") Exchange just for shared calendars. I consulted the users again and asked what it was they actually wanted to get out of shared calendars. Almost all of them said something along the lines of being able to know whether colleagues were in the office or not in the coming weeks and perhaps where they were.

Add to this the fact that, until then, we had used a single "diary sheet" for the whole office. This was a piece of paper with people down the left and days of the week across the top. Each week we would troupe down to reception and fill in our movements for the next week. This met most of our needs but it had disadvantages:

  • It only projected a week ahead
  • It was very difficult to edit as the week progressed
  • It was getting too cumbersome as the organisation grew
  • The amount of space you had was tiny.
  • It was wearing on the feet.
  • It was using up dead trees at an alarming rate!
So -- being a hobbyist programmer at the time -- I wrote Ryan's Electronic Diary Sheet at home in an atempt to meet this need. At the same time I tried to make it usable by other organisations (so no hard coded department names etc.). Your need may not be an exact match: perhaps your staff really do need shared calendars but before you rush out and renew those licences or get into other groupware server products, consider these questions:
  • Would you rather just let each other know where you are next Friday as opposed to sharing entire calendars?
  • Is shared calendaring the only thing for which you want groupware?
  • Do you want to avoid having to open Outlook just to make sure you've let people know where you are.
  • Do you want to be able to do this remotely from any PC (that can connect to the Intranet)?
  • Do you want something that is simple to configure and use without the need for special client software?
  • Do you have less than 101 users?
If you answered yes to two or more of those, you may find something like Ryan's Electronic Diary Sheet meets your needs.


The latest version of Ryan's Electronic Diary Sheet is available via Sourceforge. This will list all the available releases, I suggest you take the latest one. Everything you need is included in the download follow the instructions in the readme to install and configure.


The "readme" is distributed in the download and is called ryansiobdoc.txt. A copy is also available on this website.


Apr 2007 v1.2.1
Minor bugfix to remote_user detection routines.

If you wish to make the change yourself, edit ryanseds.pl and change the following line (should be line 150) from :

if ($users =~ m/$remote_user/){


if ($users eq $remote_user){


I prefer to answer support queries via the sourceforge forum. This currently has some FAQ's. I am notified by mail when you post on there and I will respond with a day or so.

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...