Monday, 26 May 2014

Does your office have Issues?

  1. If your office responds to repeat customer requests that require various staff in your office to carry out a number of time consuming tasks sequentially,  you have issues.
  2. If on the other hand your office generates and disseminates information to multiple contacts, you don't have issues.
Many offices have issues with their issues, primarily because they are a type 1 office trying to use type 2 office tools!  A type 1 office needs to have a central email repository within which to store their issues.  Instead, many type 1 offices use standard email clients which are designed for type 2 offices.

As an electrician my office is a type 1 office.  Retailers and marketers have type 2 offices.  For my centralised email repository, I use Roundup Issue Tracker.

In a corporate environment Roundup does three things particularly well:
  1. Acts as a email repository that can be easily searched by all staff.  Issues don't get lost in Roundup, because they can never be deleted, just retired.
  2. Makes an excellent workflow tool that tracks issues and amends their status as they move through their lifecycle in the organisation.
  3. Ensures that customers can easily communicate with staff, but in such a way that inappropriate information never crosses the boundary between the small office and the outside world.
But, to do these things I had to make some changes to Roundup, because Roundup's original target audience is software developers not corporate office environments. To make Roundup a happy camper in your typical small office environment, my version of Roundup now looks like this:


  • I distinguish between internal users and external users, since external users only interact with Roundup from their email client while internal users favour its Web interface.  For this distinction we have four types of user:
    1. Anonymous - Roundup does not know their email address
    2. User - External user
    3. Staff - Internal user
    4. Admin - Administrator
  • The Staff role is a new role that I created.  It is appended to the other roles to obtain the required behaviour eg. (Admin, Staff) or (User, Staff)
  • I send out HTML emails which include corporate signatures to external users.  Internal emails remain as plain text.
  • By default Roundup only sends emails internally to Staff. To send an email to an external client, Staff have to set a flag on their message.
  • If Roundup is to act as an effective repository, it's database must not be polluted with spam. To prevent spam I wrote the following business rules:
    • If an email sender is Anonymous their email is bounced to an Administrator.
    • If a User (not Staff) is known to Roundup, but they are attempting to create a new issue, their email is bounced to an Administrator.
    • In both cases, if the Administrator determines that the email is not spam, they forward it back into Roundup, where it appears as a new issue.

Monday, 17 February 2014

Why I love Units of Work

Not many lesson planning packages use Unit/s of Work (UoW) to organise their lessons. Classmaker uses them for everything! What is a UoW? A UoW is a container that holds a lesson collection. The lesson collection comprises individual lessons and supporting files. UoW are similar to tags, but unlike tags, a lesson cannot exist without belonging to a UoW and a lesson can only belong to one UoW.  Conversely, multiple tags can be assigned to an individual lesson and by default a lesson has no tags.

This graphic shows how the major components of Classmaker relate to each other using a Venn diagram.

At face value, UoW seem too restrictive..., and tags would appear to be a much better bet, but as I will show, this is not the case.

Pros

1.  Because a lesson must belong to a UoW, a UoW can be much more descriptive than a tag and combine operational information with data. For instance, in Classmaker, the UoW has a title, a short description, the lesson type (non-contact, routine, unit plan, rotating), whether the UoW has just been imported or if is marked for export and a list of all the supporting files attached to it. The subject of the lesson is listed in the Long Term Plan (a superset UoW) along with whether you want to display it's lessons on the Weekly Calendar or not. All of this is information that you don't want to have attached directly to individual lesson plans as some of it is operational information rather than data. Even the data may not be required on some lesson reports. But this is information that you want to be able to refer to easily if you need to, which is discussed next in 2.

2.  UoW's are reciprocal.  By this I mean that if you click on a UoW you can easily view all the child records that belong to it.  But this also works the other way around.  If you click on a child record you instantly know the parent UoW that it belongs to as well. Classmaker uses reciprocity extensively in it's user interface. Whenever you click on a lesson plan on the Weekly Calendar, the lesson detail brings up the UoW that lesson plan belongs to, all the other related lessons in the same UoW, the Long Term Plan the UoW belongs to and all the other related UoW in that Long Term Plan. This visual overview of your planning, Classmaker retrieves for you automatically, every time you click on a lesson plan.

3.  It is much easier to work with groups of records rather than one record at a time. UoW's facilitate this since a lesson can only belong to one UoW. When you delete a UoW, everything inside it goes too. Conversely, to create a clone of a UoW, export and import the entire UoW (1, 1a or 1b) via the hard disk.  The UoW keeps track of whether it is flagged to be exported, is waiting to be imported from disk or has recently been imported, rather than having to concern yourself with the state of the individual lessons involved.

4.  Batch jobs have been used in computing for a long time. The advantage of using batches is that small groups of records can be manipulated together, without exposing the database to the risk of all it's structure being changed beyond reversal by a single SQL statement. UoW's are analogous to a batch job. They can be cloned, deleted and their lesson plan dates changed using Shove. If the result is not what is expected, the cloned UoW is deleted.  Classmaker users will discover that they often use UoW's clone, delete and edit functionality to create new records from existing records as it is much easier to clone, delete and edit records than it is to create them from scratch, particularly if you use Rotating Schedules.

5.  A Classmaker user will clone and edit whenever they can.  For instance, say you need to create a new record in the same time slot as today, but for tomorrow in a different subject.  In all the other packages I've tried, your only solution would be to create a new record from scratch.  In Classmaker, you take today's record, push it forward one day (+Day) and then add it into a different Long Term Plan and Unit Plan (2c.), just four mouse-clicks with no typing of dates and times. This works due to UoW's reciprocity, mentioned above in 2.

6.  Hierarchical data structures are simple to export to disk as that is how the file system works. The parent child relationship implicit in UoW mean their existing structure can be written to disk intact. All other packages I've tried, export their lesson plans as flat files destroying their user interface relationships in the process (that's if they've even tried to export their lessons. Many vendors don't bother).

Of course, UoW's aren't all beer and skittles!

 

Cons

1.  A lesson cannot belong to multiple UoW.  With tags this is a no-brainer and their most useful attribute.
2.  You do not know at a glance all the different UoW you've created, but it's easy to see all your tags.
3.  The tags associated with a lesson can easily be changed at any time. It's more difficult to move a lesson plan from one UoW to another.

 

Summary

I prefer UoW to tags because their hierarchical structure readily translates to data hiding, reciprocity in user interfaces, easy exporting and importing, batching of work, cloning and editing records instead of creating new ones and database exporting to disk without destroying parent child relationships.

Saturday, 18 January 2014

The Internet is Dead - Long Live the Portable App!

Recently, I converted Classmaker from a standard Windows app to PocketClassmaker, a portable Windows app.  To transform Classmaker into PocketClassmaker, I had to do the following:

1.  Make sure that all directory references inside Classmaker were relative rather than absolute.
2.  Write user settings to a configuration file rather than the Windows Registry.
3.  Change the database from a Windows Service to an embedded database.

Luckily for me, these three changes were quite easy to do.  In particular, the FirebirdSQL database comes in both flavours, server and embedded, and very little modification is needed to move from one to the other.  In my case, the backup batch file had to be altered, but not much else.

The advantages of a portable app over a standard app are:

1.  No installation is necessary. Just extract the application's directory tree somewhere, perhaps onto the user's Desktop initially.
2.  As the portable app name suggests you can carry around the application on a USB stick or use it from Google Drive or Dropbox.
3.  Portable apps don't alter the host PC's environment in any way.  To get rid of them you simply delete the application's directory tree. 

The disadvantages of a portable app over a standard app are:

1.  You have to start them directly yourself instead of Windows automatically starting them for you as a Windows service.  This means the user has to be comfortable using batch files.
2.  As you move between machines, environment settings such as the printer may change.  As you are no longer using the Windows Registry, you have to reset these every time.
3.  Not suitable for a multi-user environment.

Using a portable app confers the following advantages over a Web app:

1.  Much MUCH faster to use.
2.  Always available regardless of whether the Internet is up or down.
3.  No need for user names and passwords.
4.  Much more flexible use of screen real estate.
5.  Exclusive rights to your own data with full access to the local file system.
6.  Updates are simple.  Just copy the latest version over the top of the old one.