Incorporating ActivityWatch in Design Software - Command Tracking, Logging and Correlations

Hello world!

Initially, I want to express my gratitude and appreciation for the ActivityWatch initiative. However, before everything, I must apologize in advance for my professional and research “incompatibility” with the ActivityWatch community. I am an architect and Ph.D. researcher who has no deep knowledge of how system and activity tracking works, plus my coding abilities are fairly limited to basic scripting and other methods related to design software.

Nevertheless, my recent academic ventures had me stumbling upon ActivityWatch and I can’t hide that I was quite excited about the potential value it could bring both for me and my research colleague.

I believe I shouldn’t enter now a broader discussion about the whole concept, goals, and methodology of our research but I can highlight our latest attempt and how we believe we could integrate ActivityWatch to our needs.

Therefore, what we are currently trying to do is to collect data about specific actions and commands that the subject/user uses in design software and then to qualitatively analyze it, based on our theoretical approach. The be more specific I will try to give an example:

  • Suppose a design software (in our case we are tracing design activity in Autodesk AutoCAD).
  • Let’s say that a set of designers/subjects have a task to design a specific chair.
  • Each subject has a different methodology about how he/she will go through to achieve his/her goal.
  • What if we could collect activity data that refer to specific commands of the design software
    • The number of undo actions (Ctrl+z).
    • The number of fillet command.
    • The number of insert commands.
  • Could we then collect this data and start making charts with preferred commands, the number of mistakes (undo), redo, copy, etc.
  • Relate this data to generalizations and categories.

Since we are still going through the docs and trying to comprehend the mechanisms of ActivityWatch, please bear with the forthcoming questions.

  • Generally, could this be feasible with ActivityWatch?
  • Is it possible to emphasize the activity created on a single software/platform? (our future goal of course includes the activity monitoring of the subject’s digital presence, and how “distractions” such as a google search or Pinterest could be indicative of the subject’s idiosyncrasy).
  • Is it possible to assign a theoretical “tag” to a command/action, so that the data we extract could indicate broader assumptions? (for example Undo = indecision).

We are aware this is no ordinary forum topic and we are grateful in advance to anyone showing any interest in our research problems. We have no greater expectations of someone solving everything on our behalf. We are willing and happy to learn but we strongly believe that even the slightest Interdisciplinary communication can be fruitful.

Thank you in advance and looking forward!

Sounds really interesting, regardless if you decide to use ActivityWatch or not I wish you good luck and would love to read a finished paper about this!

I think the first step is to figure out how to collect this data in the first place. Does AutoCAD expose this in some way, is there some API for it maybe? I did a quick Google and found out that AutoCAD has plugins, so it seems like there is at least some API. But that doesn’t necessarily mean that the API exposes the data that you need. It’s always a bit cumbersome with proprietary software that you can’t modify it as you wish, if it’s not open-source and there’s no API to get the data you need then this will be very hard to accomplish.

APIs for code editors are pretty good so we already have “watchers” for that, I guess that a CAD watcher would be an architects equivalent to that :slight_smile:

It’s definitely possible, the question i would ask would rather be if it’s the most efficient way to accomplish your goals. Yes, ActivityWatch has a large infrastructure that can be extended, but keep in mind that it’s a large project with multiple programming languages, libraries and frameworks across the watchers, server and web-ui so it might take some time to learn all that if you are not used to coding.

Absolutely, you can mix and match data from different buckets afterwards so you could easily see “here he was in the CAD app doing a lot of ctrl-z, then he went to the browser to google on puppies for 7 minutes then he switched back to CAD but this time without any ctrl-z for 10 minutes” for example.

Absolutely, could possibly even re-use the categorization feature already available for that.

Also, @ErikBjare is doing a master’s thesis right now about measuring EEG activity and tries to correlate that to different digital activities (mostly coding though) using ActivityWatch. Maybe that might be interesting to you as well?

Actually yes, AutoCAD has a scripting language called Autolisp, and this language has some APIs exposing some Reactors that have event listener capability. So they can listen to regular mouse/keyboard events, but also application-specific events like typical AutoCAD commands.

I found the following installing an event callback for commands

Maybe also have a look at the function reference for AutoLISP for a newer version like AutoCAD 2020, many of the functions prefixed vlr- or vla- serve this type of use-case of installing callbacks and listening to events.