Justin William’s Developer and Power User Tool List

Justin Williams:

This is the third installment of my must have must have list of tools and utilities as a Mac and iOS developer. A lot can change in twelve months when you work in the technology space. The biggest change for developers in the past twelve months is the completed transition from Xcode 3 to 4 and from iOS 4 to 5. Oh, there may have been a new version of Mac OS X thrown in there for good measure too.

Great list. I own and use almost all of the apps that Justin mentions.

RSS Folders Followup

I posted a couple of weeks ago about getting rid of my somewhat arbitrary RSS folder setup in favor of using no folders at all. As it turns out – for my needs – using no folders vs. organizing everything has made no difference all. I’m not missing anything I was getting to before, or annoyed by any difference in the order I read things in.

It makes me wonder what other systems I may have built up for myself that are really just me creating arbitrary labels instead of providing value. GTD contexts seem like low hanging fruit to look at next. For example, I’m starting to doubt the wisdom of dividing to-do items into categories like what app I’d be using, and tying them a bit more closely to physical opportunities and limitations.

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()).