1. kill the undefined commitment (you can tell them that something came up, so you can be there no longer)
2. specify the bounds of the lock, so that it won't take everything (ask them again for the time and place, if they won't reply do the 1.)
3. Guess it. If it is a drink, then it is after work. Then how much it usually takes me to get there, do it + some padding in case something goes wrong. Basically you do the work on your side.
4. Discard all conflicts. (Tell everyone that you have an important meeting, so you will interact with them tomorrow). Now your whole day is waiting for that meeting and nothing else. In some circumstances it is the right way to go.
5. Optimistic scheduling. Schedule everything to the best of your ability. If something conflicts, kill or reschedule the less important thing. (I am sorry, but something came up, so I can't be there today, maybe tomorrow?)
6. Simply wait. As the day progresses you will get more information to make the right choice
P.S. I apologize for my English (I am severely out of practice with my writing skills) (update-fn (fn [{:keys [address]}
:as customer]
(if address (update customer :address clojure.string/capitalize) customer))
customers)
which pattern matches on some `object` (map) and does processing. We find it less fragile than specifying explicit path to an element. It can also work in a polymorphic fashion. On the other hand, there is a risk of a false positive (when you modify address that you shouldn't). But you can mitigate that risk by using additional checks (in case of a customer, you can check for additional set of fields that are specific for that object(map)
edit:formatting
edit, formatting