Delayed Execution of Blocks

If you want to delay execution of block for a set number of seconds, you can use dispatch_after() in the following way to perform delayed actions in any queue you like. In the example below 3 is the number of seconds we want to delay by.

The dispatch_time() function takes dispatch_time_t as it’s first argument (typedef of uint64_t) which represents from when the delay is, and the number of nanoseconds past then until the block should be executed as it’s second argument.

You can use this a more flexible version of -[NSObject performSelector:withObject:afterDelay:] by passing dispatch_get_current_queue(), or if you want to use it across threads, by passing a different queue such as the main (dispatch_get_main_queue()) or a global queue( dispatch_get_global_queue()).

Procrastination Contexts

If you’re using GTD, you know what a context is; and if you’re a human being you probably know about procrastination. One of the goals of GTD is to develop a system in which if we don’t let ourselves procrastinate, or if we do we’re honest with ourselves about why. Whenver you’re staring at a todo item with no clue where to start, GTD can give you you the tools to analyze why you’re not doing it. If a task isn’t actionable it’s usually going to fall into one of three categories: needs to be broken down further, there’s not enough time or attention available right now, or the context you need to complete it isn’t available.

Of these three, context is the slipperiest and gives the most opportunity to trick ourselves into thinking we can’t do something when just don’t want to. If you’re someone who works on a computer and maybe fills a lot of roles (like a developer or designer), the context you need to get a lot of your work done might at first glance be “Computer.” Shit. This is a problem. Everything is in one context now and you’re trying to force yourself to hop between multiple mental states as you work through your todo items. I mean – you’re still @computer, right?. But you live in the digital age and your work has as much to do with mental state as any external factors – so obviously the solution is to create contexts based mental states instead of ones based on a person, place, or thing. Now you’re ready to start working.

Instead of unlocking the power of stress free productivity, however, you find yourself still not getting as much done as you’d like and falling behind on important tasks. You’re still procrastinating. What the fuck?

To understand why this happens, there are two things to consider. The first one is, “What about basing contexts on mental state creates opportunity for procrastination?” The second is how else we can solve the problem of the catch all context.

Why and How We Procrastinate

If I’ve narrowed down a project into atomic actionable tasks, defined realistic time barriers to complete that project, and I’m still not doing much, what’s the holdup? For me the holdup is that I rarely procrastinate on something based on physical restrictions, and I never procrastinate on doing something I want to do. I procrastinate because I don’t want to work on a specific thing, and I am inherently lazy.

This isn’t anything to be ashamed of, humans are all lazy. We’d all rather be playing than working, and most of us work so that we can play. But everyone still has things they need to get done, and some of them aren’t going to feel like play. So if one reason why we procrastinate is that we don’t want to do something, basing GTD conxexts on mental state gives us opportunity to fuel how we procrastinate – with excuses. I’m never going to feel like doing something I hate, and if I leave everything up to my current state of mind I’ll always have the excuse of not being in the right one. If you hate doing bookkeeping, you’re never going to be in that state of mind. You have to force yourself.

The primitive part of our brain is great at tricking us into avoiding work and doing things that are bad for us. If it were up to that part of our brain we’d eat nothing but candy and pizza for every meal. But not all tasks are junk food, and finding time for the ones that aren’t is important. We’ve got need to eliminate the opportunity for that part of our brain to do our thinking. A context needs to be a person, place, or thing. Almost anything else is a procrastination context.

The problem we have now is the same one we started with: having one context which holds most of what we need to get done. The reason something like @computer is a procrastination context to begin with is that it’s not really a context, it’s a super context. Nothing should be added to it directly, and it should have a lot of children to choose from. Switching between one kind task and another on a computer are really different things. Rather than mental state a better way to solve the problem is to break down the same way you’d break down a project. Break down until it make senses sense and you’re left with no reason not start doing things.

For someone who’s a software developer like me, it might be something like this:

  • Computer
    • Apps
      • OmniFocus
      • OmniGraffle
      • Xcode
      • Keynote
    • Online
      • Email
      • Basecamp
      • Freshbooks

I try to break down this list as much as possible whenever I can. Mines actually a lot more extensive than this. the point is to assign tasks to the atomic context which contains the bare minimum to make it happen. There may be some Xcode tasks that I want to do and some I don’t, but the tool to do them is the same. Once I’ve started one Xcode task I can do all of them while at that context before moving on. Even the ones I don’t want to. The point of this for me is that most of my mental states are still mappable to a person, place, or thing. By breaking down contexts to this level I’m able to help the procrastination problem by eliminating any context which can potentially become an excuse.

At least until I come up with more creative excuses.

Steve Jobs, Fear, and Trying

I’m scared to write. I’m often scared to write, anyway, but about Steve Jobs dying I’m terrified. I’ve had this feeling since it happened that there was no way anything I could say will not be good enough to capture the weight of things, or even just my feelings about it. I also knew as I found out that if I let that fear control me and said nothing, I’d be upset with myself. So I’ve waited. I’ve waited now to the point where everyone else who had something to say about it probably has. And now I’m going to say the same things that a lot of other people who feel the same way as me have, because I need to say something before I’ve waited entirely too long and let a new fear take over.

Steve is someone who directly changed my life by deciding to change the world and following through with it. No one was counting on me to do much, and by the time I decided to teach myself to write Mac software I hadn’t done a lot to prove anyone wrong. I can’t even really give a specific reason why it stuck and I kept trying, but it did. I put as much of myself into learning this one thing as I could, and eventually turned it into a job. I’ve been doing it as my only job since 2008 and have been a part of making things that I’m insanely proud of. As of a month ago I’m running my own business, and proud of that. This is really a long winded way to say that Steve’s contributions the world gave me a platform to – and I hope continue to – make my own contributions that I can be proud of.

I don’t know what I’d be doing right now if there had been no Steve, but I don’t think it would be this, and I can’t imagine it being something that’s allowed to meet people who I feel like I belong with and who are equally passionate about something I’m obsessed with. Steve was right when he talked about understanding mortality in the Stanford address everyone quoted last week. It’s something I think a lot about, although I’d forgotten that he had said it until people started quoting him.

My own crude version of the same idea – which I’ve repeated several times before – is this: We’re all going to be dead someday soon, and we have a very limited timeframe before to do something amazing – so you need to kick as much ass as possible while you can.

My friend Mike had the perfect addition:

Steve Jobs kicked a lot of asses, and was a personal hero to me. I worry a lot about not being good enough, smart enough, talented enough – even to write on my own blog. Steve is one of the people who inspired me to stop being scared and to try my best by doing amazing things and never accepting good enough as that. It’s that inspiration that has made me think – sometimes – that I might actually be good enough.

I’m sad I’ll never get to tell that him in person.