Living in Immediate Mode
There are two design philosophies that are seen in graphics API design: immediate mode (your code maintains the state) and retained mode (the other person’s code maintains the state).
The pseudocode below might help demonstrate this.
fn on_frame(window) {
// I need to explicitly make it draw the button every frame.
window.draw_button();
}
window.run(on_frame);
window.add_button();
// I’ve told it the button is there, so it draws it for me after that.
window.run(on_frame);
The main difference is that the retained mode code requires action once whereas the immediate mode code action on every single frame, and if that action stops being taken, its result ceases to exist. This is a programming concept, but I think it can be applied to people to some extent.
Retained mode in everyday situations
I often find myself having ideas, filing them away mentally, and proceeding to do nothing while deluding myself into thinking that I’ve just “deferred the task to a more appropriate time”. This is a very retained mode way of thinking, and it makes it very difficult to get anything done independently.
A retained mode thinker might do the following.
- They might wake up to an alarm clock and think “I’ll get up in a bit” instead of actually getting up.
- They might notice they’re running out of groceries and think “I’ll get them tomorrow — it’ll be more convenient” even if they don’t have anything better to do.
- They might see themselves as someone who does pottery (or some other task) without actually doing it consistently (i.e., the flag’s set in their brain, but the brain’s not a retained mode interface, so nothing gets done).
Pivoting to immediate mode
Conversely, I think an immediate mode mindset would involve habitualizing doing things as soon as they come to mind — at least unless there is a very compelling reason not to.
An immediate mode thinker might do the following.
- They might get up as soon as they hear their alarm clock.
- They might make a list of things they do and follow it every day.
- They might think about writing something when watching TV, turn off the TV, and immediately write that webpage.
This might sound like “discipline”, but it’s less about self-coercion and more about minimizing the friction between thinking of doing something and actually doing something. If you have a good idea, it shouldn’t be that hard to continue with it after you’ve progressed past the starting point and built good habits. That’s just how I see it personally though, and I’m sure that the “metacognition” wonks have a lot to say on that subject.
Practicing output
I’ve been trying this for a few years, and I’ve found that it helps a lot to practice. Some of the exercises I’ve found useful are listed below.
- Set your alarm for 2 minutes from now, go to bed, wait for the alarm to go off, then get out of bed. Repeat.
- Look around you, pick an object, open a word processor, and free write a page about that object without opening anything else (e.g., don’t check the Internet).
- If you think about going outside, go outside for a bit, even if it’s only for a minute or two, and even if you don’t really have a reason to do it.
The only way to find what brings positive feedback is to try new things.