Goodbye, RSS Folders

Although I’d add or subtract every once in a while, I’ve had my folders in Google Reader pretty much the same for the last couple of years (Tech, Developer Blogs, News, etc). It’s worked pretty well on the whole. I’ve often had the problem when adding new feeds, however, that if they don’t easily fit into one of my existing folders I don’t usually really want to further complicate the existing taxonomy with more folders.

I started wondering if it was improving anything at all. As an experiment I went into NetNewsWire and blew them all away, moving all of my existing feeds into the same place. Turns out it doesn’t make anything any slower and now I don’t worry about where to put things. The lesson for me is that, once again: less is more and simple usually wins.

I may end up experimenting with something based more on how I read than content categories in the future (e.g. Favorites), but I want to live with this for a while first.

Simple Is the Greatest Kind of Empowerment

My mom is not technical. When someone makes reference to normal people not understanding things like the filesystem, they’re talking about my mom. She also loves the iPad I bought her last year and uses it constantly. It’s the first time I’ve seen her excited about technology at all. It’s even empowered her to speak intelligently about things like Apple, Steve Jobs and the significance of what they’ve done with technology, which I never would have expected.

Richard Stallman considers the iPad a jail and the people who would use such a product fools:

Steve Jobs, the pioneer of the computer as a jail made cool, designed to sever fools from their freedom, has died.

This statement is a bit old, but since I read it a few weeks ago I’ve been thinking about it a lot. Besides being callous, insensitive and demonstrating Stallman’s clear lack of social graces, it’s just flat wrong. My mom doesn’t consider the iPad a jail, she considers it empowering. So do a lot of other people.

Not having to be a computer expert to derive value has always been the spirit of the Macintosh, and the iPad is the culmination of the philosophy of a volks-computer. Simple is the greatest kind of empowerment.

Five Thousand Things

Fortune quoting Steve Jobs from the lost Cringely interview:

Designing a product is keeping five thousand things in your brain and fitting them all together in new and different ways to get what you want. And every day you discover something new that is a new problem or a new opportunity to fit these things together a little differently.

Anyone looking to contract out software development should read this article. Not having a clear vision of what done will look like, and thinking that having the kernel of an idea is enough is delusional. Smart people know that implementation is 99% of what makes anything great.

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.