librelist archives

« back to archive

Re: proposal: Newman application for scheduling meetings

Re: proposal: Newman application for scheduling meetings

From:
Eric G
Date:
2012-02-18 @ 05:58
Just to give an update on this proposal (
https://github.com/mendicant-university/newman/issues/10).

## Updating mendicant-university/scheduler.

I am looking at a re-write, basically.  Some of the basic algorithm can be
salvaged but the guts are very different using lazily-evaluated temporal
expressions.

Also, the old ruby
DSL<https://github.com/mendicant-university/scheduler/blob/master/README.rdoc>adds
an extra layer that I don't think we need any more, and is impractical
to use.
- No one really will want to type it in like that
- That DSL assumed all the data for scheduling an event would be known when
you defined the event. Whereas now, the data collects 'asynchronously' over
email messages.
- Eval'ing email messages would be insane.

## Draft Newman message API

Instead, I'm proposing a CRUD-ish API for the email commands, using YAML
for the message body to make it as user-friendly as possible. (I definitely
favor YAML vs JSON when it's user entered data).

Also note that I'm proposing the 'to' email address be fixed, and the
routing be done on the subject. But I can easily see routing being done on
the 'to' address instead.

 Command
 To
 Subject
 Body (example)
  Create an unscheduled event with duration in minutes and during the
specified week
 c+{event}.schedule
 /^([^\+\?\-].+)/
 duration: 90
week_of: 2012-02-13
  Add your available times, adding to any previously-specified available
times
 c+{event}.schedule
 +available
 -
  days: [:monday, :wednesday, :friday]
  at:   ["15:00 UTC", "18:00 UTC"]
-
  days: [:tuesday, :saturday]
  at:   ["16:30 UTC"]
  Reset your available times
 c+{event}.schedule -available

  List all timeslots people are available in so far
 c+{event}.schedule ?all

  List availability of a single participant
 c+{event}.schedule ?{email}

  List the current best timeslots and who can participate in them
 c+{event}.schedule ?best



What do you think?

Eric

Re: [newman] Re: proposal: Newman application for scheduling meetings

From:
Gregory Brown
Date:
2012-02-20 @ 01:22
I'm not sure this is going to be all that convenient. What advantage 
would this offer over a very simple web based UI?

-greg

On 2/18/12 12:58 AM, Eric G wrote:
> Just to give an update on this proposal (
> https://github.com/mendicant-university/newman/issues/10).
>
> ## Updating mendicant-university/scheduler.
>
> I am looking at a re-write, basically.  Some of the basic algorithm can
> be salvaged but the guts are very different using lazily-evaluated
> temporal expressions.
>
> Also, the old ruby DSL
> <https://github.com/mendicant-university/scheduler/blob/master/README.rdoc>
> adds an extra layer that I don't think we need any more, and is
> impractical to use.
> - No one really will want to type it in like that
> - That DSL assumed all the data for scheduling an event would be known
> when you defined the event. Whereas now, the data collects
> 'asynchronously' over email messages.
> - Eval'ing email messages would be insane.
>
> ## Draft Newman message API
>
> Instead, I'm proposing a CRUD-ish API for the email commands, using YAML
> for the message body to make it as user-friendly as possible. (I
> definitely favor YAML vs JSON when it's user entered data).
>
> Also note that I'm proposing the 'to' email address be fixed, and the
> routing be done on the subject. But I can easily see routing being done
> on the 'to' address instead.
>
> Command
> 	To
> 	Subject
> 	Body (example)
> Create an unscheduled event with duration in minutes and during the
> specified week
> 	c+{event}.schedule
> 	/^([^\+\?\-].+)/
> 	duration: 90
> week_of: 2012-02-13
> Add your available times, adding to any previously-specified available times
> 	c+{event}.schedule
> 	+available
> 	-
>    days: [:monday, :wednesday, :friday]
>    at:   ["15:00 UTC", "18:00 UTC"]
> -
>    days: [:tuesday, :saturday]
>    at:   ["16:30 UTC"]
> Reset your available times
> 	c+{event}.schedule 	-available
> 	
> List all timeslots people are available in so far
> 	c+{event}.schedule 	?all
> 	
> List availability of a single participant
> 	c+{event}.schedule 	?{email}
> 	
> List the current best timeslots and who can participate in them
> 	c+{event}.schedule 	?best
> 	
>
>
>
> What do you think?
>
> Eric

Re: [newman] Re: proposal: Newman application for scheduling meetings

From:
Eric G
Date:
2012-02-20 @ 01:59
On Sun, Feb 19, 2012 at 8:22 PM, Gregory Brown <
gregory_brown@letterboxes.org> wrote:

> I'm not sure this is going to be all that convenient. What advantage
> would this offer over a very simple web based UI?
>
> -greg
>
>
1. The main point I think is to drive Newman development, and at the same
time to find out what kinds of approaches work best in developing Newman
apps. This is a case of an application with gem dependencies, domain models
(the event scheduler, participants, etc), needs for persistence, etc. It
could also be a case to test mounting multiple apps: for instance I could
see it running as an add-on to the librelist clone app, or in combination
with bglusman's RSVP app somehow.

2. It's an interface that could easily be adapted to a web application,
yes. From that point of view it would be educational to see how it is
implemented in e.g. Sinatra vs Newman. Is it possible to use common model
classes that could be used in either, for instance.

3. I hate web UIs. I think the syntax could easily be simplified to the
point where you could type things like "Mon, Wed, Fri 11am - 5pm EST". IMO
that would be tons faster than clicking around calendar widgets ;).  I
mean, the best current interface out there for this kind of thing seems to
be Doodle. But even clicking checkboxes is slow and non-intuitive, next to
just typing in your availability.

-Eric

Re: [newman] Re: proposal: Newman application for scheduling meetings

From:
Gregory Brown
Date:
2012-02-20 @ 03:39
On 2/19/12 8:59 PM, Eric G wrote:
>
> On Sun, Feb 19, 2012 at 8:22 PM, Gregory Brown

>
> 1. The main point I think is to drive Newman development, and at the
> same time to find out what kinds of approaches work best in developing
> Newman apps. This is a case of an application with gem dependencies,
> domain models (the event scheduler, participants, etc), needs for
> persistence, etc. It could also be a case to test mounting multiple
> apps: for instance I could see it running as an add-on to the librelist
> clone app, or in combination with bglusman's RSVP app somehow.

All things worth trying out. I thought the basic subject matching 
outline you had looked good, and the use of the two field just to 
reference a mounted app can be a good pattern if it works out well.

> 2. It's an interface that could easily be adapted to a web application,
> yes. From that point of view it would be educational to see how it is
> implemented in e.g. Sinatra vs Newman. Is it possible to use common
> model classes that could be used in either, for instance.

Good point.

> 3. I hate web UIs. I think the syntax could easily be simplified to the
> point where you could type things like "Mon, Wed, Fri 11am - 5pm EST".
> IMO that would be tons faster than clicking around calendar widgets ;).
>   I mean, the best current interface out there for this kind of thing
> seems to be Doodle. But even clicking checkboxes is slow and
> non-intuitive, next to just typing in your availability.

Since you're going to need to write in a structured format (and learn 
the structure of that format anywat), maybe we target natural language 
processing then.

I'm just a little worried about the error prone nature of this kind of 
entry, and I'm not sure how well the tool will fare when it comes to 
learnability. I guess we could kick an email describing the format 
whenever invalid input is given?

Maybe the entry format can be structured but very simple:

MWF 11am-5pm EST
TR 3pm-8pm EST

So each line is strictly:

[DAYS] [TIME RANGE] [TIMEZONE]

I think that's easy enough to parse unambiguously, and easy to remember 
once you've done it a couple times. I would explicitly *not* try to 
parse too many different ways to enter dates/times, and instead 
normalize as much as possible.

-greg

Re: [newman] Re: proposal: Newman application for scheduling meetings

From:
Eric G
Date:
2012-02-20 @ 06:01
I just released a mostly-working, totally rewritten scheduler app that uses
my Tempr library instead of Runt -- and thus works on ruby 1.9.x:
https://github.com/ericgj/scheduler .  Comments welcome. Tempr made the
code a *lot* simpler and easier to read I think, although there are still
some nasty places.

On Sun, Feb 19, 2012 at 10:39 PM, Gregory Brown <
gregory_brown@letterboxes.org> wrote:

>
> Since you're going to need to write in a structured format (and learn
> the structure of that format anywat), maybe we target natural language
> processing then.
>
> I'm just a little worried about the error prone nature of this kind of
> entry, and I'm not sure how well the tool will fare when it comes to
> learnability. I guess we could kick an email describing the format
> whenever invalid input is given?
>
> Yeah, that was my thought. Given the users right now are programmers used
to exacting syntax ... maybe not so much of a pain.


> Maybe the entry format can be structured but very simple:
>
> MWF 11am-5pm EST
> TR 3pm-8pm EST
>
> So each line is strictly:
>
> [DAYS] [TIME RANGE] [TIMEZONE]
>
> I think that's easy enough to parse unambiguously, and easy to remember
> once you've done it a couple times. I would explicitly *not* try to
> parse too many different ways to enter dates/times, and instead
> normalize as much as possible.
>
> Yeah, definitely. I like that format, except it's hard to remember what to
do with Tues & Thurs and Sat & Sun.
What about just putting the date and time parts on separate lines, and an
extra line between the entries? Then you could space-delimit the days.
Something like

Mon Wed Fri
11am-5pm EST

Tue Sat
3pm-8pm EST


?

Re: [newman] Re: proposal: Newman application for scheduling meetings

From:
Gregory Brown
Date:
2012-02-20 @ 06:10
On 2/20/12 1:01 AM, Eric G wrote:
> I just released a mostly-working, totally rewritten scheduler app that
> uses my Tempr library instead of Runt -- and thus works on ruby 1.9.x:
> https://github.com/ericgj/scheduler .  Comments welcome. Tempr made the
> code a *lot* simpler and easier to read I think, although there are
> still some nasty places.

I owe you a code review but it's going to be a couple days at least 
because I have a pretty busy week ahead of me. If I don't get to this by 
Friday, bug me about it then and I'll take a look over the weekend.

> Yeah, definitely. I like that format, except it's hard to remember what
> to do with Tues & Thurs and Sat & Sun.
> What about just putting the date and time parts on separate lines, and
> an extra line between the entries? Then you could space-delimit the
> days. Something like
>
> Mon Wed Fri
> 11am-5pm EST
>
> Tue Sat
> 3pm-8pm EST


This sounds good to me. I don't generally have a hard time with 
Tuesday,Thursday, but can't think of what to do with Saturday, Sunday. 
So this is a good call :)

-greg