App::JobLog and App::Nag namespaces

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Hi. I recently decided, after having used Perl for years, to put a few
modules on CPAN. I had time, being recently laid off, it would stretch
my abilities a bit, and I thought I could give something back. So I
went ahead and did it. Two distributions are up there now:

Then I read the documentation at PAUSE more and realized I didn't
follow protocol and should have asked about the namespaces first (I
did look first for functionality overlap with any existing modules on
CPAN and didn't find it). So, I figured better late than never. Could
you advise me whether these are reasonable namespace choices?

A bit about the distributions:


App::Nag is a little command line reminder utility. If you install it
you get an executable called "nag" and the modules App::Nag and
App::Nag::Slap. You send yourself reminders to pop up after a fixed
interval or at a specified time and you tell it how annoying to make
the reminder. When the time is up you get the reminder. E.g.,

nag 15m put bread in oven


nag --slap 2:55pm go get kids

It's pretty simple, mostly a wrapper around other modules. I wanted a
reminder utility like this. The ones I'd been using weren't doing the
trick. So I wrote this. Now my loaves aren't so lofty and my kids are
less neglected.


As its name suggests, this is an application that lets you log the
hours you've worked. It's main nice feature, in my opinion, is that it
understands all sort of English natural language expressions for dates
or periods of time, so it's easy to extract reports. It understands
"ever", "last year", "last month", "this week", "Feb 2010", "Feb 1 -
14", "last Friday", "Wednesday", "pay period", etc. For example:

houghton@NorthernSpy:~$ job s yesterday
Tuesday, 15 March
  11:33 - 11:35 am  0.04  C******n  checking up on Mort's issue with
  11:38 - 11:46 am  0.12  C******n  checking up on Mort's issue with
pipeline; figuring out null pointer in multi-threaded
   12:40 - 1:11 pm  0.52  C******n  debugging null

  C******n    0.68

(tag munged to protect the innocent and it looks better on a screen
with a fixed width font)

App::JobLog installs the executable "job". This is pretty similar to
"jobs", but doesn't seem to clash with any common existing utilities,
at least on Ubuntu, which I'm using as representative of the Unix
ecosystem, whose command line utilities I imagine are a superset of
what you're likely to find on a Mac or Windows. It also installs a
large number of modules in the App::JobLog namespace. Most of these
are dependent to one degree or another on other modules in the
namespace. Those one most likely to be useful as separate library is
App::JobLog::TimeGrammar, which interprets the natural language time
expressions. Unfortunately, in order to get it to understand "pay
period", I wired it a bit to App::JobLog::Config. I'll consider how
better to separate these two in the future.

So, I'd appreciate any comments. I'll take silence as evidence that no
one has any problem with my use of the namespaces. Thanks.

David Houghton

Site Timeline