One of the recurring themes in my quest to be organized is that of todo list staleness. Inevitably, the cycle looks like this:
I sit down, and in a burst of creative energy I create a beautifully crafted, perfectly organized todo list. It’s a thing to behold. Everything is broken down into nice orderly projects, each with a clearly identified next action. There are contexts assigned to everything: this one is an errand, this one needs to be done online, this one needs to be done in the kitchen. It is, without a doubt, the epitome of organization. And this time, it’s going to stick. I’m going to review it daily, weekly, monthly to make sure that everything is current. This todo list will give me productivity superpowers.
This generally lasts less than a week.
Fairly quickly, I stop reviewing the todo list. For reasons unknown, I’ve never been able to develop the habit of reviewing my lists on a daily basis. Once I stop reviewing the list, I stop putting things into it consistently. Often, I will write them down on paper (or in a text file, or perhaps in Evernote), and then do them without ever entering them into whatever tool I’m using. Once this happens, I end up using the simpler tool as my whole todo list. I stop organizing things in projects, I just write things down, and then do them.
The next stop on this train is that I stop reviewing things weekly. This inevitably creates a bit of anxiety. I know that there are things in there that I should be doing, but I’m not. I’m focused on the things on my little todo list. It’s a paradox, because on the one hand I feel productive checking things off of my little list. On the other hand, I know that this means I’m not making the best use of my time. It means that my todo list is skewed towards the most recent things that I’ve put on it, rather than things on the larger list that might have more strategic value. To borrow a phrase from Stephen Covey, it’s the urgent, not the important.
In the end, the list atrophies. It’s not updated anymore, and starts to resemble a decaying building that’s been left to sit for decades. It’s a mix of things that have already been completed but never checked off, projects that are long-past relavant but still sitting on the list, and poorly worded tasks, the context of which have long been forgotten. It’s Exhibit A in the argument for the Broken Windows Theory. I could go through and get everything up to date again, but I don’t. Mostly, I suspect, it’s just too overwhelming. There’s lots of stuff there and my eyes just glaze over when I look at it.
Inevitably, in a fit of productive frustration, the cycle begins again. Sometimes it’s a restart with the same tool, purging the old and busted, and replacing it with the new hotness. Quite frequently, however, it’s with a new tool altogether (I think I’m on my sixth or seventh system by now).
In the most recent cycle, I switched tools again. This time from Evernote (which is an awesome notetaking tool, but a very poor todo list manager, at least for people with more than a handful of things going on) to Omnifocus. I’ve watched Omnifocus for years and always viewed it with quite a bit of interest. I’m a GTD advocate (even if I frequently fall off the wagon) and it was designed from the ground up to work well with GTD. It’s got great mobile apps, and a top notch desktop experience as well. The reason I hadn’t used it before now is that I spend a good portion of my day using Windows. Not by choice, mind you, but it pays the bills. Without a solid cross platform experience, I didn’t really think I could be productive. But now that I work from home, and have easy and constant access to not only my iOS devices, but my Mac as well, it becomes a little more practical. So I plunked down my cash on the counter and bought into the entire ecosystem.
So far, Omnifocus has been great. But predictably, there are signs of the cycle repeating. I’ve gone days or weeks without even looking at it. I’ve got a small, hand-written list on an index card (the amazing Frictionless Capture Cards). There are things in Omnifocus that are certainly out of date, and there are projects that I’m working on that aren’t in there at all. The first window is shattered.
There’s hope though. Omnifocus has one thing that I have yet to see anywhere else, which is a review mode. It exists in the desktop app, but it really shines in the iPad application. It works like this: you tap Review, and Omnifocus takes you through every single project in your list, and presents it to you one at a time. You can look it over, check things off that have been completed, and add things that might be needed. Then you mark it as reviewed, and Omnifocus gives you the next item. It’s brilliant. You only see one project at a time, so it’s much less overwhelming (at least to me). Once I’m done with the review, everything is current and I feel much more relaxed. It doesn’t matter how long it’s been since the last review, in less than an hour I can be completely current.
So after decades of using tools that never stuck for long, I feel like I’ve finally found the one that works the way my brain does. And while it’s not perfect, it suits me well.
I try to ride my bike
most mornings, assuming it’s not pouring down rain. It’s the same
route most days, but it occured to me
a few weeks ago that I really had no idea how far, or fast, I was
riding. Being the nerd that I am, I decided to find a technology
solution to this problem.
Enter Cyclemeter
Dedicated bike computers and GPS devices have existed for some years
now, but like most everyone else these days, I’ve got an iPhone with a
GPS built right in. A little searching led me to a number of apps that
did what I wanted, and after reading some reviews, I settled on
Cyclemeter. The name is actually a bit of a
misnomer, since the app will also work for walking, runnig, skiing, or
pretty much any other activity that involves moving forward on a
mostly-horizontal plane.
How it Works
Once you’ve installed the app, it’s easy to get started. Open the app,
and click the giant green “Start” button. Then get moving. Cyclemeter
will plot your route as you go, and calculate your time, speed,
distance, elevation and calories burned (if you provide your weight).
When you’re done, click “Stop”, and CycleMeter saves the information.
You can look back at previous days on the calendar.
Cyclemeter has a slew of other features, like sharing via Facebook,
Twitter or Daily Mile, competing against yourself or someone else, and a
bunch of nice ways to visualize your results. You can also export all of
the data, so you’re not locked in if you want to move to something else,
or just want to play with the numbers yourself. All of your data can be
backed up to iCloud as well, so you won’t lose it if you run into a tree
and shatter your iPhone.
You Need This
At $4.99 Cyclemeter is quite a value when you consider what it
replaces. If you bike or run, I’d highly recommend it. You can buy it on
the App Store.
As the title of my blog implies, I’m a curious person. I like learning,
and I’m addicted to keeping up on the latest news about things I’m
interested in: programming, design, and the like. Sometimes I find it
hard to keep up with it all. About a month ago, I discovered
Prismatic, and it’s changed how I read the
web by making it easier to find the news that I care about.
Prismatic scans all of the links that come across Twitter (that’s a lot
of links), and categorizes them using some fairly sophisticated software
(written in
Clojure),
and then matches those links to you based on who you follow and what you
tweet about. It sifts through all of Twitter to find the stuff that YOU
care about. That’s powerful.
Getting started with Prismatic is easy. Sign in and link it to your
Twitter accounts and it will present you with a list of articles that
you will like, based on your Twitter activity. You can also tell
Prismatic what you’re interested in, by adding, well, interests. They
seem to have just about everything, so whatever you’re looking for is
likely to be there.
Prismatic gives you the stuff you care about presented in a single
“river of news” format - as you get to the end of the page, it loads
more articles for you. They pull out a little it of the article to give
you an idea of what it’s about, and show you a sampling of what people
on Twitter are saying about it. Each article that you see has a couple
of controls on it that let you tell Prismatic what you like and dislike,
which will adjust what it shows you based on that feedback. In theory,
at least, it will learn over time what you want to see and show you more
of what you like, and less of what you don’t.
I’ve been using Prismatic for a month now, and I’m completely addicted.
It’s a great way to find news about the things you’re interested in, has
some great features, and there’s certainly more to come (an iOS app is
in the works according to their blog). Try it out and let me know what
you think.
I am a huge fan of coffee and over the years I have tried a lot of
different means of preparing it. I currently own a french press, a drip
maker, and a stovetop espresso pot. All of these make good coffee, with
each having its own set of pros and cons. Last year, however, I
discovered the best method for brewing coffee:
Aeropress.
It makes delicious coffee, takes up almost no space in your kitchen, and
cleanup is easy.
The Aeropress works kind of like an espresso maker, though at a much
lower pressure. The coffee it produces is espresso strength. This means
you can drink it like an espresso or use it to create espresso-based
drinks like Cafe Au Lait or Capuccino. I add hot water to mine to make
an Americano.
Since getting the Aeropress, it’s been the only method I’ve used to brew
coffee. It’s replaced the drip machine in our kitchen. It takes up
almost no space, travels well, and produces consistently great coffee.
Perhaps the greatest feature is the one I haven’t mentioned yet: price.
It will set you back a little more than $20, much lower than a decent
home espresso machine or even a drip coffee maker. It’s great for
traveling or camping. Any place you can make hot water, you can make
coffee with the Aeropress.
One caveat: you will need a coffee grinder, or a place to buy beans that
will grind them for you. Coffee ground for a drip coffee maker won’t
work (which rules out pretty much all pre-ground coffee you would get at
the store). You need grounds that are somewhere between espresso and
drip. You’re really going to want a conical burr grinder, similar to
this one: I suspect if you’ve read this far than you either have one or
are willing to buy one.
In summary: If you enjoy great coffee, you need an
Aeropress.
To get an even better idea of how it works, check out this short video:
I tend to be a little skeptical of the new and shiny. There is often a
lot of hype about how life changing some new website or gizmo is going
to be. Sometimes, however, something comes along that does live up to
the hype. The latest one I’ve found is a rather nondescript site called
ifttt. The URL is strange, until you understand
that it stands for “If This Then That”. What the site does is allow you
to automate bits of your digital life by watching for events (the “if
this” portion), and then taking an action (the “then that” portion). It
lets you tie together the various sites and services that you use,
allowing you to do even more with them.
This warrants an example, perhaps.
Let’s say you take lots of pictures of your kids with Instagram. And
let’s say your mom (or grandmother) isn’t the most tech-savvy user. She
uses email, but doesn’t have a smartphone and doesn’t want one. She
doesn’t use Facebook or Twitter. Wouldn’t it be nice if you could
automatically email any pictures you post to Instagram to your mother so
that she doesn’t give you a guilt trip for never sending her pictures of
her grandkids (hypothetically speaking, of course. Any resemblance to my
own mother is purely coincidental). Ifttt can do that for you. What
about those receipts you get emailed to you every month that you need at
the end of the year for taxes? Wouldn’t it be nice if you could get
those sent to a specific folder in Evernote so that they’re all in one
place? Ifttt can do that for you. You know all those links that come
across your Twitter stream that you don’t take the time to read?
Wouldn’t it be cool if you could just favorite the tweet and have the
link in the tweet automagically added to your Instapaper account? Ifttt
can do that for you.
So, how does it work?
Ifttt is built on the idea of triggers, channels, tasks, and recipes.
Channels represent the hooks into the
websites you use. Gmail, Google Reader,Twitter, Facebook, Evernote,
Dropbox, Instagram, etc. If it’s a popular service, ifttt probably has a
channel for it. There are also general channels for things like RSS
feeds that aren’t tied to a specific service.
Triggers then are events that occur on these services. A picture is
taken on Instagram, a new email appears in your Gmail account, someone
new follows you on Twitter. Triggers allow you to specify when you want
to take action. They also frequently allow you to specify criteria. In
the case of Gmail, for example, you can specify that you only want to
take action if the email is from a specific person, or contains a
certain word in the subject line. If you’ve ever created filters in
Gmail or Outlook, it’s the same concept, but applied on a much larger
scale.
Tasks, like Triggers, are built on Channels. They allow you to perform
tasks in reaction to a trigger. Examples of tasks would be things like:
Sending an email
Creating a new note in Evernote
Sending a tweet
Send an SMS message
Tasks let you use data from the triggers (ie the subject line in an
email) in your task. So you could, for example, use the subject of an
email to populate the subject of your note in Evernote.
Recipes are pre-made combinations of the
other items, created either by the team at ifttt, by other users, or
yourself. There are a lot of them, and chances are you will find a lot
of them that you can put to use immediately. Here are a few that I’m
either using myself or found interesting:
I’ve only been using this service for a couple of months, but I’ve
already discovered a lot of useful things I can automate with it.
Posting things to Twitter for me, taking receipts that I get in email
and adding them to my Tax Folder in Evernote, etc. This saves me time
and makes my life easier. What’s most exciting though is that there is
that this service is very young, and has a lot of potential. There are a
lot more channels, tasks, and triggers yet to be created. Perhaps one
day they will add the ability to do conditionals, or even more complex
logic, using JavaScript or some other language.
It’s early, but I see a lot of potential here. Go create an account and
try it out yourself. What can you automate?
Like Marco Arment I’m
not qualified to eulogize Steve Jobs, but I owe a lot to him so I need
to say something.
My first computer was an Apple //c. 1985. I spent a lot of time on that
computer. A lot. Probably an unhealthy amount.
I was a nerdy kid to begin with, and I instantly fell in love with it. I
spent endless hours on that computer. Playing games, writing programs in
BASIC, and generally just exploring the new world that it opened up for
me. Those hours spent in front of the computer paid off. I went on,
years later, to write code professionally. It’s not an exaggeration to
say that owning that Apple //c shaped who I became.
I’ve admired Steve Jobs since I was old enough to know who he was. When
he founded NEXT, I desperately wanted one of those beautiful (and
expensive) systems. I’ve seen every movie Pixar has put out. I’ve been
inspired by his business sense, his design savvy, and his drive. He’s
accomplished more in his abbreviated lifetime than most people could
accomplish in ten. His Stanford commencement
speech
stands as one of the most inspiring things I’ve heard.
My latest computer is a MacBook Air. I spend a lot of time on that
computer. A lot. Probably an unhealthy amount.
Fog, in case you haven’t heard of it, is a fantastic
cloud computing library written in Ruby. It provides a unified interface
to several popular cloud computing platforms(including Amazon,
Rackspace, Linode, and others), making it easy to interact with them
from Ruby. It currently supports four types of cloud services: storage,
compute, DNS, and CDN. Fog has become very popular lately, and serves as
the backbone for Chef’s cloud computing functionality, which is how I
first became aware of it.
I recently used Fog to write a backup script in Ruby to automatically
send encrypted database backups from a database server running at
Rackspace to Amazon’s S3 storage service. Here’s how I did it.
Overview
My script runs as the second step in a process. The first step is a
shell script that calls pg_dump to dump a PostgreSQL database and then
encrypts the file using GnuPG, dropping them in a backup directory on
the database server.
My Fog-based script’s job is to make sure that all of the files in the
backup directory get moved to S3.
Writing Files
Fogsync (my script), looks at all of the files in that directory and
makes sure that they all exist in a bucket on S3. If they don’t, it
copies them up there. Additionally, it deletes old backups from S3. For
this customer, we keep backups for 14 days, so all backups older than
that get deleted.
Let’s look at how it works:
fog =Fog::Storage.new(
:provider=>'AWS',
:aws_access_key_id=>MY_ACCESS_KEY,
:aws_secret_access_key=>MY_SECRET )
directory = fog.directories.get("MY_DIRECTORY")
files =Dir["/var/backup/*.gpg"]for file in files do name =File.basename(file)
unless directory.files.head(name)
directory.files.create(:key=> name, :body=> open(file))
endend
Here’s what this snippet does:
Creates a connection to AWS. The syntax is basically the same for
connecting to all of the cloud platforms, just the parameter names are
changed.
Uses ‘head’ to check if the file exists and, optionally, get some
metadata about it (size, modify date, etc). Think of this as the cloud
equivalent to the unix stat command. You don’t want to use the ‘get’
command, as that will return the whole file, which would take a very
long time if the files are large cough*voice of experience*cough.
Creates the file in the given directory (“bucket” in S3 terms) if it
doesn’t exist already.
If you’ve used S3, you’ll notice that Fog uses slightly different terms
for things than S3 does. Because Fog works across a number of different
storage providers, it uses more general terms. While this might be
confusing at first if you’re familiar with a specific provider’s
nomenclature, but the tradeoff is that if you want to move from one
provider to another, the only thing you have to change is the code that
sets up the connection (the call to Fog::Storage.new() in this example).
This is fairly straightforward as well. Get all the files in the
directory and check their age, deleting the ones that are older than we
want to keep.
So that, in a nutshell, is how to use Fog. This is a simplified example
of course, in my production code the parameters are all pulled from
configuration files, and the script emails a report of what it did, in
addition to having a lot more error handling.
If you do any scripting with cloud computing, you owe it to yourself to
check out Fog.
This morning I was looking for a way to handle incoming email in a web
application (similar to the way Highrise and Evernote let you email
things to a special email address and have them put into their system).
There are a number of ways to do this via procmail, or by using
something to connect to your mail server using POP or IMAP and reading
emails, but I was looking for a way to do this without having to host my
own email infrastructure. Ideally, I want something like
Twilio, that will receive the email and then do an
HTTP POST to the endpoint of my choosing.
Looks similar to CloudMailIn, though not in beta. There’s a free plan
for up to 100 emails a day, and then it goes up from there. Their site
was down when I first went to it this morning, which makes me a tad
nervous, but that may well be an isolated thing.
SendGrid
SendGrid is a heavy hitter in the email space, mostly doing outbound
delivery. They do however have a Parse API that seems to perform the
same function as the other two services. I’m not sure on the pricing
here, their basic plan is $9.95 per month for 10,000 emails, but I’m
not sure if that includes incoming or not. UPDATE: I heard from
SendGrid. Their plans cover both incoming and outgoing, so for the in
the case of the $9.95 plan, it could be a mix of both, up to 10,000
(thanks to Twilio’s @johnsheehan for
the pointer to SendGrid)
I haven’t used any of these yet, so I can’t make an endorsement of one
over the other, but I thought I’d post it here in case anyone else is
looking for this kind of provider. If you have experience with any of
these, please comment with your opinion.
Full-Ack: an Emacs interface to
Ack Ack is a useful little app for searching
source code. If you ever use grep for finding things in your code,
switch to ack immediately - you won’t regret it. This is a handy front
end to ack for Emacs users.