Oogiem;106940 said:I think you're missing the point.. You are still using contexts, they are just different.
I will make more progress on finishing my Android EID program if I do all the tasks I need to do when I am in the Android development environment, regardless of the specific project they relate to.
Maybe a clarification is in order. For example right now I am working on a major expansion of LambTracker. Right now part of my struggle is adapting my mind to write in Python vs Java for the desktop app. But ignoring that I still work in chunks, or contexts and across GTD projects.This is absolutely untrue for me.
Not necessarily. I create contexts as needed for almost anything. I use apps, locations, mental state and more when I create, use and then delete my contexts.It seems the traditional contexts are formed around tools, locations, people.
Ah but for me that is exactly why I prefer to stay in the application. Earlier today I was in the mode of deep focused work on UI in LambTracker. It's much harder to flip out to something else than it is to stay there and continue the deep work.But for difficult knowledge work (or maybe you prefer deep work), the tool switching isn’t the primary cost: it’s the mental switching between ideas that really costs (ironically referred to as context switching by non GTD people).
I tend to agree. But that is switching projects for me. Projects in the GTD sense not projects in the coding sense. LambTracker is a coding project. But it has hundreds of GTD projects and for me LambTracker is an Area of Focus not a project in GTD terms.When I start working on a feature of our app, the hardest part is getting into my mind all the state about how it needs to work, what modules in the code are affected, how those systems go together, etc. If I implement some part of this in the Android framework the absolute least efficient thing I could do would be to find some other unrelated Android feature and try to get all that state into my head and implement it. I will lose all that valuable context and thinking (and it’s basic neuroscience that this makes you very tired). For me the most efficient thing, is to keep all that mental state in mind and go implement another piece of it in the database, or maybe the web app.
Again, I think you are confusing things a bit in terms of GTD practice and terminology. It's EXACTLY the cost of mental jumping that is why contexts are so useful for me. That and the physical movements for my location based contexts.When I read about people’s use of them it seems that they are like machines jumping from mental state to mental state with ease and as long as they don’t have to switch tools they are efficient. Now I realize that this is true for a specific type of task and works well for me as well. One off phone calls, errands etc are great to batch. But the most difficult and important projects in my life require total focus and are actually hindered by splintering into other projects that just happen to have NAs associated with the tool I’m using.
Of course larger outcomes are very important. But they are proably NOT single GTD projects. They are multiple projects in GTD terms. That's why you ahve to have space to do them and that means being efficient.think maybe that’s why the op was getting so worked up because for some of us, these larger projects are the most important work in our lives. To imagine not having that total focus on them for the majority of our time seems “ridiculous.”
Give it a try. FWIW one of my contexts is LambTracker because even though I use several tools (PyCharm, terminal, various SQLite editors etc.) I have to be in the right frame of mind and with enough time to do some good and accomplish something to get anything done there. I am pretty sure that all significant LambTracker work will cease once lambing starts because I am too interrupted then to get anything complex done. I may work on updating the manual, or something else simple but it sure won't be implementing complex SQLite queries or handling UI tasks which is something I am terrible at.Keep one off tasks and small projects (2-3 steps) the same and use my current contexts. Have a new class of context called “big projects” (or maybe “hard projects”) so each hard project is itself a context (then the only things that wouldn’t go there would be actions that I truly can’t do in that focus state like errands as the op suggested originally, essentially things that “block” me as we say in software).
However my GTD Projects in this area are: Implement top level UI for LT-Desktop, Implement UI for Population Genetics Module, Implement UI for Sheep Module, Implement UI for Owner Module, Implement UI for Set-up Module and so on. It's far faster for me to update the various modules with the current button styles and other UI elements at once.
So true and easy to confirm. You just have to go to the store twice with the same shopping list. First time go there when you are hungry, second time when you are full. At the checkout you will find more goods in your shopping cart when you're hungry.Actually, context does matter. While not directly related to GTD, one can see from this very recent study that decisions made are based on the context of where we are. Intriguing.
How does the brain put decisions in context? Study finds unexpected brain region at work
When crossing the street, which way do you first turn your head to check for oncoming traffic? This decision depends on the context of where you are. A group of scientists has been studying how animals use context when making decisions. And now, their latest findings have tied this ability to an...www.sciencedaily.com
Still Misunderstanding me. I don't do them in parallel, I would program the buttons in one module and then go do them in all the other modules. So each module update is sequential but the task is in the same context and mindset across multiple GTD projects.I really don't think I could do them in parallel.
I don't think so, But I'm also not convinced that there is anyone who can actually handle multitasking well.Oogiem, have I ever raised the scenario where you might be part of the 2.5 percent of the population who are "super multitaskers"?
Still Misunderstanding me. I don't do them in parallel, I would program the buttons in one module and then go do them in all the other modules. So each module update is sequential but the task is in the same context and mindset across multiple GTD projects.
I don't think so, But I'm also not convinced that there is anyone who can actually handle multitasking well.
It's far faster for me to update the various modules with the current button styles and other UI elements at once.
However my GTD Projects in this area are: Implement top level UI for LT-Desktop, Implement UI for Population Genetics Module, Implement UI for Sheep Module, Implement UI for Owner Module, Implement UI for Set-up Module and so on.
Another big section is debugging my SQLite queries with the new database structure. That is totally different and I'll again crosses GTD projects. I need to get the various queries translated from my entered in by hand in an SQLIte tool format to Python query formats. It's complex since a typical query is about 75 lines of code. That's what I mean by staying in context but crossing GTD projects.
Ah but for me that is exactly why I prefer to stay in the application. Earlier today I was in the mode of deep focused work on UI in LambTracker. It's much harder to flip out to something else than it is to stay there and continue the deep work.
It's EXACTLY the cost of mental jumping that is why contexts are so useful for me. That and the physical movements for my location based contexts.
I use apps, locations, mental state and more when I create, use and then delete my contexts.
Right now part of my struggle is adapting my mind to write in Python vs Java for the desktop app.
BTW if you want to take a look at the handheld Android version of LambTracker it's out on GitLab under OogieM. The Python work is the desktop app that I'm doing onow. My Android piece is what I use out with the sheep in the field.
Where are the hard edges?
I do not do UI at all well. For me ANYTHING related to how the user interacts is a struggle. My forte is the database design and then the actual user case since I am both a farmer (one of my users) and a registrar (another use case) the only use case I do not have much experience with is governmental agencies but I have some experience in pulling reports from them acting in one of my other roles. Also it is pretty much a given that all my users are probably NOT skilled at using computers as a rule.This is precisely the kind of widget-y task I was talking about (maybe we see this differently because I started out in UI but..) This is a perfect example of a good use of batching for a task that isn't mentally taxing. Once you've designed and decided on the button styles (which could be mentally taxing), updating them everywhere is just cranking widgets, and for me that would be a single project called "Update styles everywhere" or something, like
Agreed. And the UI for a farm with 100000 sheep pulling a report has to be different from one with less than 100 sheep. I am the only programmer at this time on this project. When I am working in the UI section I model either in my mind or with some test data how to get the reports/interactions out, where the user will be (environmental conditions etc.) and then try to figure out a good way to get that data displayed. Then I mock them up and test them against a subset of the live data which has all the corner cases I know of at this time. Figuring out one section for one type of task needs to then get adapted for the other modules even though for me it crosses GTD project lines. I find that once I solve one segment I can apply that same basic concept and tools in other modules efficiently even though I still have to do more thinking on the how and details once there. It's the same type of task for me so I do it across modules.The function of a UI for me often takes much more thought, it can have implications on what the backend is doing (aka this piece of ui is a virtualized grid so the backend needs to be able to give me all 10000 ids, but then batch the actual rows as I request them on scroll, for example).
D.R.Y is a goal but as a practical matter it's not as easy as I would like. For example the field chute and sheep side hardware is an Android tablet. One of the current rules in Android is that you can't pass a database cursor across activities, and each screen is a different activity. Due to screen real estate I have cases with multiple activities to accomplish a task. I have to redo the get a current cursor based on the data I want several times. That by necessity causes you to reuse stuff and not even in a library due to Android rules. it's a real PITA IMO. There are also the limits of data storage, RAM and screen size in the mobile app that are less relevant in the desktop versions. The desktop has to run on Linux, Mac and Windows computers so that limits how I can set up the UI as it has to look/feel native but be one set of code. I'm using 2 completely different languages for the mobile vs desktop in part so I can easily add in scientific analysis code that is already written and available only in Python.I intentionally code in such a way as to avoid the widget-y tasks (because D.R.Y. and in our case the need to be configurable), so most of what I'm doing isn't batching lots of small things, but thinking hard about one single thing if that makes sense.
For me it is the opposite.I can switch features and modules far easier than I can switch languages. I originally learned to code in FORTRAN IV. My Java coding is only in the last 6 years and Python is basically 3 months after testing and then rejecting several other possible language options for the desktop app. So I'm still in the major learning curve about the entire Python language and the almost religious argument between 2.7 and 3.7 However I've been working in the application area trying to do the tasks I want LambTracker to do and the reports I need for over 20 years. I know my working environment and many of the issues and problems with existing tools because I've tried nearly all of them.The failure of the existing software and hardware tools to solve my problems in a way I can use that is both elegant and inexpensive is why I started the whole LambTracker project. So I can quickly flip between what I need to work out in the field when processing a newborn lamb vs what I need at my desk during a blizzard in November when I am planning the matings for the next season vs what I need when deciding which sheep to send to butcher this time. I've done those tasks so many times that I can easily switch to that mode.I think some of this might just come down to differences in what feels mentally taxing to us. For me switching languages isn't nearly as mentally taxing as switching feature projects. But that's likely because I've been programming long enough with the tools I'm using.
I think we are saying about the same thing. For example: It's funny you mention a massive recursive task. In population genetic analysis one task that all the further code uses is to build a sequential file of animals where all parents are in the file before all children. Since parents and children can be added to the database in any order you can't just read the animal tables sequentially to build your input for the next procedure. As a practical matter you are recursively looking up the parents of a particular child and moving backwards. Or you can try to locate the oldest animal and run forwards. There are advantages and disadvantages to both options. Which one I choose often depends on the total population size. Doing a full analysis on a population of millions of animals is far different than doing one where the total population is under 500 animals. The UI has to adapt, at least in the reporting section. The start the task interface can be the same. So for me the UI of initiation is a separate project from reporting based on results.These sound like that kind of thing. Essentially you can get into "sql mode" and certain parts of translating the queries become rote. You find things you're doing repeatedly and start copy pasting, maybe you use multicursor etc. I call this "fast task" mode. But (and again I mean no offense here), I don't view this kind of task as complex in the sense I'm describing. Debugging and updating styles are all polish type things that happen after the deep work is done. The deep part is designing the ui and those queries and the functionality of the interface and how the whole system goes together (and whether you can or should reuse things you already have, or what changes these new functions will require to the current system etc) or writing a really difficult recursive algorithm
YES!!! And that is why contexts can have a starting point as outlined in the book but then must adapt and change to the person and their work. A big step forward in my GTD practice was when I finally grokked that contexts are personal and variable and fluid. That's why now I try to answer questions in the light of how GTD works for me. Offer some other options that people can try and either use, adapt or discard as they see fit. That goes for contexts, compartmentalization of work, inclusion of everything not just work into my GTD system, how I organize project support materials and reference etc. etc. etc.So maybe the real task is trying to figure out where the lines of difficult mental switches lie right now for me and making those into contexts.
Where are the hard edges? That's IMHO the question to be pondered.
Ugh I long for this. My users have been sales people primarily through 3 companies. I would give an ear to work on something I was actually using myself.I am both a farmer (one of my users) and a registrar (another use case)
Also it is pretty much a given that all my users are probably NOT skilled at using computers as a rule.
That by necessity causes you to reuse stuff and not even in a library due to Android rules. it's a real PITA IMO.
Why not build a webapp? These days with modern browser apis you can even design the thing to operate offline. Plus then you can use Typescript which is the best language since everThe desktop has to run on Linux, Mac and Windows computers
so I can easily add in scientific analysis code that is already written and available only in Python.
For example: It's funny you mention a massive recursive task. In population genetic analysis one task that all the further code uses is to build a sequential file of animals where all parents are in the file before all children. Since parents and children can be added to the database in any order you can't just read the animal tables sequentially to build your input for the next procedure. As a practical matter you are recursively looking up the parents of a particular child and moving backwards. Or you can try to locate the oldest animal and run forwards.
yay!YES!!!
That's why now I try to answer questions in the light of how GTD works for me. Offer some other options that people can try and either use, adapt or discard as they see fit. That goes for contexts, compartmentalization of work, inclusion of everything not just work into my GTD system, how I organize project support materials and reference etc. etc. etc.
By the way I am really enjoying this conversation. It may be off topic for GTD but I would love to continue the conversation about UIs and programming. One of my problems is I am somewhat isolated and don't have many folks I can bat ideas around with.