(Not) Thinking About Dates

ma
matt
Posts: 1180
Joined: Mon Jul 30, 2007 9:35 am

Fri Nov 07, 2008 3:37 am Post

This started out as a forum post, but as it grew I thought it was more suited to the blog.

http://aeontimeline.wordpress.com/2008/ ... out-dates/

Your comments and suggestions are welcome.

ha
hawksmoor
Posts: 15
Joined: Sun Dec 02, 2007 9:44 pm
Location: Sora, Italy
Contact:

Fri Nov 07, 2008 10:43 pm Post

Create a bunch of events with a bunch of constraints, and get the software to automatically resolve the events to suitable dates as you drag other events around the timeline.

I'm not a programmer, but in terms of logic it should be like adding a specified unit of measure (hours, days, weeks, months, years, decades, centuries, and so forth...)

How do you design an interface that makes creating formal rules seamless?

Maybe a sheet coming down when creating an event or a character, with a button to check to enable fuzzy dates which makes possible to choose one of the temporal units available, and/or a contextual menu when on an event to modify it.

How do you mix fixed dates with fuzzy dates? Will it force you to define too many relationships between events in order to work, so the user wastes time forming rules instead of planning novels? How should you respond to a fuzzy date being dragged elsewhere in the calendar?


If it's possible to add fuzzy dates as temporal units it's just a matter of apply a mathematical operator as " + " or " - " to a given date...
As I said before, I'm not a programmer, so I don't know how hard is to code something like this, where mathematical operations with different units are to be displayed as graphical distance on the screen between one event and another... to add the capability of change fuzzy date just by dragging around an event is beyond me.
Just hope this helps a little, if only to point in the right direction... maybe, or maybe not.

And what do you do when all the constraints don’t add up, and the timeline cannot be resolved at all?

Well, I think if the timeline is not resolved at all, it would be the right time to re-think the timeline to make it work... would be great to point out weak areas in the narration, wouldn't it?

Just my humble 2 cents...

Ciao, Andrea
Coffee lover

Su
Sunny
Posts: 23
Joined: Sat Aug 23, 2008 2:37 am
Location: Sydney, Australia

Sat Nov 08, 2008 5:16 am Post

As an intuitive means of entering fuzzy dates, would it be easiest to have some sort of contextual menu?

For example, whenever you selected multiple events with the "apple key" clicks, the timeline could know that a fuzzy event is called for and give a list of events selected. Each event could then have a before/after checkbox and an "insert time period" box by its name in a pop-up.

Another potentially more graphical way could be using the same idea as the split or nested timelines. In the 1001 nights scenario each story would have to reference its own separate timeline from the overall timeline of the story.

And in the structure of the 1001 Nights as a whole the only important time reference or "lock" for an individual tale's timeline would be on which night or nights the story is actually told. You would want the choice to change the order of tales about, so some form of extra-dimensional fuzziness is called for so that a span of years could be referred to in a tale which in itself is only one night long in the broader arc of the piece.

A similar idea for fuzzy timings would be to create "locks" to events: A right click which brings up a box which says something along the lines of "Lock this event to...."

The fuzzy event could then have vertical lines connecting it to its locked events, and no horizontal line at all to the broader timeline until when and if you decide to lock it there.

I'm not sure if these are just rambling or not, but I hope they've been helpful musings nonetheless.

Lewis

User avatar
Siren
Posts: 758
Joined: Mon Mar 12, 2007 11:29 am
Platform: Mac + iOS
Location: U.K.

Sat Nov 08, 2008 9:50 am Post

Speaking as someone who spent her formative years in a company that made project management software (both 4GL and application), and who well remembers the traumas surrounding the programming and design of constraint-based scheduling and network planning, this is potentially a hideously complicated task!

You might like to look at various project management apps to see how they handle this nowadays, since it is essentially the same issue (with timeline events being parallel to project activities). I am no longer up to speed with developments in the world of project management software, so I don't know about successful implementations of fuzzy dates. But this sort of software does handle input of formal rules, interrelationships between activities, rescheduling when activities are moved or changed, and error handling for unresolvable constraints -- and also warns when resources are overloaded (equivalent to having a character in two places at once or getting from Paris to Berlin in ten minutes).

If you are looking at pm apps for inspiration/research, the most obvious one is the ghastly Microsoft Project (Windows). Mac apps are Merlin and OmniPlan (both of which allow a free trial). They are all quite different in their implementations. Merlin has a tie-in with NovaMind (mind-mapping software), which offers an interesting interface approach that de-emphasises the need for fine-grained detail at the outset.
Literature & Latte support team

Lo
Lolo
Posts: 8
Joined: Fri Jan 02, 2009 3:01 am

Fri Jan 02, 2009 3:32 am Post

Hello,
I only recently discovered this community and your Aeon project has driven me to register and make my first post! On to the topic:

I would like to add something to the discussion about these fuzzy dates.

I myself would prefer to work in a Relative mode -- I don't use absolute dates when creating stories.

My suggestion is that the user should be able to create "Dates of Utmost Significance" (or milestones) along a timeline, and the rest of the events would have values relative to these milestones.

For instance, if Bob's wedding night is a milestone, we would have other events dated relative to this (2 days after wedding night, 1.5 months after wedding night, etc.). If an event occurs between two milestones (e.g. wedding and divorce), that event would have two of these qualifiers (e.g. 2 days after wedding night and 3 months before divorce).

The user should be free to turn any event on the timeline into a milestone.

Something like that. What do you think?

ma
matt
Posts: 1180
Joined: Mon Jul 30, 2007 9:35 am

Tue Jan 06, 2009 11:18 am Post

Hi Lola,
Sorry I didn't reply to this earlier.

I understand what you mean about not caring about absolute dates. I know for the last novel I wrote, I eventually pinned it down to an actual month etc. when it became necessary late in the process, but it was only in the concluding sections that an actual date became necessary (a public holiday, as it happens).

The biggest difficulty with shifting to "relative" dates, however, is the complexity of having everything tied together. I could see it becoming very frustrating if you had to define every event as being some time after the first event. For some events it matters, but for a lot of others, you are not going to care, beyond perhaps "about 3 months" or "about 20 years".

So part of the problem is with finding a way to make options like that available to users when they want them, but not make them a requirement. The only way I can think of for that at the moment is to have everything else pinned to an absolute timeline... I am still grappling with how best to tie everything together, and represent such inter-event links.

Matt

Pt
Ptz
Posts: 31
Joined: Tue Apr 01, 2008 1:54 pm

Thu Jan 08, 2009 8:46 pm Post

Hi, I've been trying to jot down some notes over the winter holidays, but I didn't go too far; I hope my notes below make enough sense and provide you with some ideas. I'm writing a biography, so my interest in this application was immediate. Building up a timeline for a biography is not very different from making one up completely. There are differences, though: very often I find myself trying to give events a date, and I can never be totally precise as to whether an event took place in a particular day - or a particular month, for what matters. Hence my concern that a user interface should definitely allow me to be as fuzzy as I need in drawing my timeline.
Here are my notes, I hope you find them useful.
Ptz
-------------
- Duration -
Events can occur in a single point in time (a split second, an hour of the day, a day in a specific month) or have a specific duration ("it took him two months to write the symphony"). This means that I should be free to define my events specifying either one date only, or two "boundary" dates.
→ User Input: whenever I add a new date I should be able to define a start and an end date. If I don't compile the "end date" field, the event has "zero" duration.
→ Timeline Display: a single point in time could be just a dot;an event of some duration could be a thicker line along the timeline.

- Fuzziness -
Some events can't be precisely pinned down in time: for example, a biographer might find a letter by Beethoven with no date on it, but he might have some ideas about the period in which it was written; only, he'll never know the exact day.
Or, imagine a new Beethoven composition was found, again with no dates on it: when was it written, how long did it take to write it? Certainly before the 9th, say, but no more certainties. Fuzziness applies to events with an uncertain duration, as well as to events with an uncertain collocation in time.
→ User Input: a check box specifying that the given date(s) are fuzzy/imprecise/undetermined; a slider of some sort might specify how much "fuzzy" the dates are (in percentage? in days/weeks/months? ...)
→ Timeline Display: fuzziness can be represented by gradient colors/transparencies/dotted lines, etc.

- Uncertainty -
In my biographical research, I often come across facts which have not been proven yet, or have been just inferred as having being occurred. For example, in studying the letters and diaries of my biography subject, I might infer that X replied in written to Y to an urgent matter, but no letter has ever been found. Or maybe that reply never happened. I need to highlight such cases, because it's important to note that maybe they didn't happen then, or maybe they didn't happen at all. This is similar to the concept of fuzziness, but in this case I'm not at all sure that the event took place.
→ User Input: I could check a box for each of the following open questions: is the date uncertain? is the duration uncertain? are both date and duration uncertain?
→ Timeline Display: a question mark in the event label could do the trick; no further messing with colours or lines.

- Dependencies -
An event may be dependent on a specific event in the past (or future). "Must happen after event Z", "must happen three weeks before event Z"
→ User Input & Timeline display: ???

- Time drilling -
Time-drilling means being able to specify the time details of a given event: "spring", "mm:yyyy", "afternoon", "11pm", "hh:mm:ss" are all details which depend very much on the context and they usually coexist in writing an outline for a story. As a biographer I'm dealing with faxes or emails sent and received, and I might like to be as accurate as to give the detail of the hour and minute a given communication was sent, if I so wished.
→ User Input: every new event could look like a new contact in the Mac's Address Book (with its own variable set of customisable fields: Year, Month, Day, etc); or it could use the same inteface of Tiger's Smart Folders, which allows me to specify more or less fields as I wish: minute, hour, part of day ("morning", "evening", etc.), day, week, month, season, year, etc.
→ Timeline Display: the information displayed in the timeline should be freely customisable and independent of the information specified by the user (i.e. I might just want to see a short description of the event and rely visually on the timeline for the remaining information - If I need to know more I could control-click or open an Inspector)

- Timeline range -
I should be able to choose a real calendar with real years; or just an empty calendar for fiction, with no reference to the year - and possibly a way to set and change weekdays every time I feel like it ("Dec 23 I decided it was Tuesday; now it's important that New Year's Eve is on a Sunday, so what day was the 23rd...?")
Also, in writing a biography, I need to match every event with a relevant date, and it's going to be important to me to know that Dec 23 2008 is a Tuesday; however, in writing a novel, more likely I'll be totally uninterested in such details: "it was December, 23" - my book takes place in some year, it doesn't matter which, and I'm not even telling. In this case it would be distracting to specify a year every time in my timeline application.
- I should be able to expand my calendar as I write along, adding dates before my earliest date entered, or after my latest (in other words, my timeline should have no fixed boundaries).

-------------

sj
sjmagy
Posts: 4
Joined: Thu Jan 08, 2009 1:08 am

Fri Jan 09, 2009 2:33 am Post

Bleh. I think I have more questions than answers. Sorry for the length, I tend to "type out loud" and responses mirror my (usually derailed) train of thought.

I was thinking along the lines of Ptz's suggestion for "boundary dates" for each event, where you set the start and end days. The user could optionally enter the start and end time (hours, minutes, seconds) as well. This would serve two purposes and fulfill two feature requests -- set the duration of the event, but also allow for "fuzzy dates." There might be a "simple mode" where you can just set the duration (as you do in the 0.1.x beta) by typing in a # and selecting the time interval, and Aeon would know / pre-fill the end day / time.

If the event in question is dependent upon a prior event's boundary date(s), we're then talking about a "linked" event.

When you link an event, either a sheet or popup window could appear (or perhaps the Event Inspector could then display this information) where you specify the rule for the link, where the rule is a measurement of time.

In my mind, you would either select a checkbox marked "Fixed" and enter the specific gap of time (1 year, 3 months, 2 days, 21 hours, 18 minutes, 36 seconds, for example), OR you select a checkbox marked "Fuzzy" and enter the information similar to how you specify the duration in an Event in the current beta -- "2 hours" or "2 days".

Aeon Timeline would then know that these 2 events are linked and must be separated on the timeline by the value of time you've specified (whether highly specific or totally vague).

That said, I don't know how to handle the situation where Event A and Event C are linked together, and Event B and Event C are also linked together, and the link "gap" you specify between A & C and B & C result in a conflict....

How to Link Events in the UI
  • Option 1:
    In OS X, holding down Command+Option keys + Drag an item will create an "alias" of that item that is linked to and dependent upon its original's location, so my first thought was to use that key combination and drag the event in question in the Central Pane to the event it is dependent upon, but the problem is that you may be linking events that are years apart, which could require an awful lot of scrolling in the Central Pane, so, that idea seems to be out of consideration.
  • Option 2: a user control in the Event Inspector, perhaps a popup menu similar to the way you create links in Scrivener -- a series of hierarchical "flyout" menus that let you drill down in your project (timeline, in AT's case) to select the item you want this Event to be linked to.

    I'm not sure how to organize the menu though, as we may be talking about a timeline that spans 1,000 years (hey, some people might be really ambitious!), so I imagine it would require some significant programmatic effort to determine how to build out this menu, something like:
    • If the timeline spans more than 10 but less than 100 years, you could break out the top-level by decades, second level by year, third level by month, fourth level by day, and the fifth level would list the events (where the name matches the Event's title, and could also display the specific date / time for that event).
    • If the timeline spans more than 100 years, you could break out the top-level by centuries, the second level by decade, third level by year, fourth level by month, fifth level by day, and the sixth level would contain one entry per event (where the name matches that Event's title).
  • Option 3: A button that says, "Link Event..." and when clicked, opens up a copy of the Central Pane view, where you scroll to the event in question, and double-click on the Event you want to link to, which then closes this second Central Pane view.
  • Option 4: A button that says, "Link Event", which turns your cursor into a link icon, and you scroll the main Central Pane to find the event you want to link to, then double-click on it to link the events, exit the "Link" mode, and display the options for how / by what gap of time these events are linked.

I have questions though that I've no idea how to answer...

Does entering just ONE "linked" event (with or without a fuzzy date) automatically require you to make ALL your events linked and specify the rules for each event's relationship to other events, or would Aeon be able to automatically adjust every event accordingly, even if it wasn't linked?

For example, if Event A needed to happen 28 days before Event B, and you moved Event B further back in time by 2 days, would Aeon automatically adjust Event C, D, E, and F (which were NOT linked) by 2 days to keep everything in synch with its original layout, or would it just auto-adjust Event A and leave C, D, E, and F where they were?

If it can automatically adjust every event just based on having ONE link in your timeline, that's awesome, but what about other events that should NOT be adjusted (meaning, you need that event to stay fixed to the date & time you've specified, with everything else "floating" around it in time)?

In that case, I think we'd need an option in the UI for each event, where the user selects whether the event's date is "fixed in time" (and should not be auto-adjusted) or if it "floats" in time (and should be adjusted if other events are adjusted).

If you select "fixed in time" then that event is never auto-adjusted by Aeon, even if a prior or subsequent event was moved around the timeline.

Maybe there isn't even an automatic adjustment when you move linked events; perhaps it's a menu item / specific command you have to explicitly execute after moving events around the timeline, at which point Aeon goes through each event and all the links and figures out where things should be in relation to each other based on the data you've already provided for each event and link. When it's done figuring all this out, it can report back all the events that will be moved, listing their old and new date/time, and requiring you to click another button to actually adjust them in your timeline.

I think ideally it would let you select / deselect specific events in that report just in case there are some you don't want to be adjusted.

Anyway, from a graphical perspective, linked events can probably be reduced down to a fairly simple representation in the Central Pane.

We've all seen the little chain-link "infinity" symbol used to represent links in various applications. It's usually horizontal, but given Aeon's Central Pane, we'd need it vertical. The little link icon can appear before the title of the event, with an arrow on top (pointing upward) if the Event is "linked" to a prior event, and an arrow at bottom (pointing downward) if the Event is "linked" to a subsequent event. (And obviously, it would need to display both an up and down arrow if it's linked both ways.)

That's all that I have for now... my last brain cell is now fried and on strike.