14 posts tagged “backpack”
Not long ago, I switched to TextDrive after being let down by a cheaper web host. So far, it’s been great…it’s a lot more feature rich and the people over there really know what they’re doing.
The basic $8/month plan includes access to 5GB of file storage for backup/sharing/whatever. I use it to back up regular ol’ documents and files on a daily basis.
They make this easy to do with a UNIX tool called rsync that compresses and transfers only the files that have changed. rsync is the real workhorse here, but I’ve rigged up a backup solution that utilizes all of the following tools:
- rsync – does the actual file transfer
- ssh keys – used to avoid entering manual passwords, which enables scripting
- Automator – ties together the scripts into an application
- iCal – enables scheduling of the application
- Growl – provides notification onscreen that the script ran
- Highrise – keeps a running history of the activity and provides RSS access
To cut to the case, download this file and check out the scripts. For more detail, read on.
This idea uses the UNIX philosophy of employing many small tools each perfectly suited for their job. (I love it.) Let’s take it step by step.
- rsync – It’s easy to familiarize yourself with this portion, since you can run it “interactively” on the command line. I do something very similar to what this gentleman did, though I supply slightly different options to rsync as per the recommendations of the Strongspace folks.
- ssh keys – If you play with rsync for a while, you’ll see that it asks for a password when you run it. Since we want to script this, we can’t have that, now can we? Fortunately it’s easy to generate ssh keys, which basically make your computer and your Strongspace account “trust each other” so that checking ID isn’t necessary.
- Automator – This part is pretty easy…I use Automator in OS X to string together the basic sequence of steps: backup the files, send the log to Highrise, and flash a Growl notification. Download this file to check it out.
- iCal – I chose to use iCal to schedule the Automator action (using this basic method) rather than a daemon like cron because it seemed like a more natural, Mac-like fit.
- Growl – I’ll be honest, this step is mostly for fun…Growl is just good times. However, I do use it as a quick validation that iCal lauched the script.
- Highrise – Growl is cool, but it didn’t provide much in the way of detail as to what happened with the script. I kinda wanted to see a log of what happened, except I didn’t feel like managing log files. I was really looking to get the log info via RSS, and for that I had to post it to the web somewhere. Highrise solves all these issues, and the default Dashboard view is great in the way it highlights the latest info. (After all, I really don’t care about yesterday’s backup after today.) My script e-mails the contents of the log file to my Highrise Dropbox, which was really easy to do with just a few lines of Ruby code.
So far, this has worked without a hitch, and I feel much better having my files backed up everyday.
I've gone back to putting everything into 37signals apps after a brief honeymoon with other tools. The 37signals stuff just works too well to use anything else.
My current approach is to use Highrise for work stuff and Backpack for personal stuff...it's a pretty good split. I find that work is more people-oriented (call this person, e-mail this person, etc.) and home stuff best organized by keeping track of lots of little lists and bits of data. It's also kinda nice to keep them separated so you're not thinking about work all the time.
Anyway, besides keeping lists, I also get a lot of use out of Backpack's reminders at home. It's great for reminding you about little domestic things like picking up stamps and paying your credit card bill. My problem is short term memory...if I think of it, I've got to write it down immediately. This is especially true if I'm on the go.
To deal with this problem, I've written a little bit of Ruby code that creates a reminder when I send an e-mail to a certain address. I did something like this a while ago, but at the time I didn't have a way to run the code without constantly polling a POP account for new messages (which is no good). Thanks to the fact that I've now switched to TextDrive for web hosting, I can call my script when an e-mail comes in, which is much more reliable. (The message is fed to the script via good ol' STDIN...nice.)
The script tries to be a bit clever and interpret text like "Call Mom tuesday 5pm" into a reminder with the text "Call Mom" that will fire next Tuesday at 5pm. Take a look at this to see other examples of input it will interpret, but please ignore the sucky POP-related code and just go with this simpler version if at all possible.
I've mentioned a few times how I'm a fan of Backpack, and I've started to use Highrise to track day-to-day work stuff. However, the tool that I'm excited about lately is Stikkit, which allows you to keep a digital collection of yellow sticky notes that have brains behind them.
The general idea with Stikkit is that you quickly jot down whatever you need to remember and the tool figures out if the note represents an appointment, to-do item, contact, bookmark, or some combination of those. Each note is just a wide open text area, like a real sticky note, and there's no structure imposed on your notes (e.g. title or description fields). This allows for a lot of flexibility, making it easy to store almost any kind of data, including:
- To-do items or lists of to-dos (small projects)
- Reference information, like names of restaurants to go to or bands to check out
- "Standard" contact information (personal address book)
- Events/appointments (with reminders)
- Bookmarks or URLs that go along with any of the above (it's nice to have them stored together)
The feature set is solid, and you can even use it to drive your GTD system. (If you do this, here's a quick tip: link stikkits together by including their aka names in curly braces.) But to me, the fun comes in when you use the super-complete, ultra-friendly API to slice and dice the data in your own way. They've made it easy to dump any kind of data you'd like into the app, and with the API it's also easy to access this data and use it however you like.
For example, there's currently no mobile version of Stikkit, and I want a way to access my data from my BlackBerry. With a tiny bit of fiddling and no code, I created an RSS feed of my to-do items using the API, which I then loaded into NewsGator Go!. It's not a perfect solution but it'll get me over the hump, and I may revisit the idea later and whip up a mobile version myself in Rails because the API is so robust.
In terms of downsides, I'd ding Stikkit on the following:
- No mobile version, at least not yet (mentioned above)
- Some bugs here and there
- Performance (i.e. speed) is so-so
I think all these issues will be rectified over time, because the team is building on top of Stikkit for their next app so it's not like it will become orphaned. Progress may not be moving as fast as we'd like, but it never does.
Overall, I'd say it's good, and if you want a flexible, easy way to store your personal information you should give it a try.
I know I’m getting a little behind the times here (my new job is keeping me pleasantly busy), but you may have noticed that the Backpack Calendar was released a week or so ago. Backpack, for the unfamiliar, is a nice little web-based personal information management tool of which I am a big fan. Backpack’s Calendar, then, represents the addition of standard appointment tracking features to Backpack’s usual collection of notes, to do lists, and files.
You may already know that 37signals (the makers of Backpack) subscribe to a “less is more” philosophy that manifests itself in their wonderfully simple products. Unfortunately, in the case of a calendar app, I actually need more. But, let’s start my being positive…it’s better for your blood pressure.
Pros
- Simple. The Backpack Calendar is very simple, in the sense of being easy to understand. In playing with the app a bit, you get the sense that users will grasp what it can do and how it works very quickly.
- Pretty. In my amateur opinion, I’d say the Backpack Calendar is very aethstetically pleasing. That really does count for something.
- Integrated. If you’re a heavy Backpack user like me, it’s nice that your calendar is “right there” with the rest of your stuff.
Cons
- Inflexible. In the drive for simplicity, flexibility has been sacrificed. You can only get a reminder 30 minutes ahead of time. The “natural language” entry mode (
dinner 8pm tue) is the only way to add/edit an event. The only “view” of your events is (roughly) a monthly view. I won’t list every example, but if you don’t like any of these arbitrary limitations, too bad. - Immobile. Unfortunately, there’s not currently a “mobile” version of the Backpack Calendar or any way to view your calendar from a cell phone or PDA. I’m thinking this might show up in a later version, though, because Backpack itself has a very nice mobile version. (Google Calendar acheives this via text messaging, and it’s OK but not great.)
- No “wife” mode. Though I can share my calendar with other people in the sense that they can view it, there’s not currently a way for anyone else to add/edit events on your calendar. The Google Calendar, which I currently use, allows for my wife to make changes to my (our) calendar.
In a dorky sort of way, it saddens me to confront the reality that I won’t be using this product. I’m a huge fan of 37signals in general, and I was definitely looking forward to this, so this is a bit of a disappointment. I would still consider using it if some of my nitpicks were addressed, but even then I’m still not exactly “wowed.” I mean, at that point, it would just be an OK calendar.
On some level, I expected the 37signals crew to bring some more “outside the box” thinking to the idea of a calendar and perhaps bring a fresh approach to the problem. Right now, it’s just “less” calendar, but I kinda wanted a different, better calendar. Oh well…I think I’ll be OK with Google Calendar for now.
In the last day or so I noticed that Google Calendar now displays other calendars in the iCalendar format properly. Specifically, I noticed a problem with the Backpack Reminders iCal feed that is now fixed.
It’s not the biggest deal in the world, but it’s a nice way to integrate your Backpack with Google Calendar.
To paraphrase Mick Jagger, I know, it’s only a web-based calendar, but I like it.
I’m at the point where my immediate reaction if I need to “save something” is to put it into my Backpack. I’m hooked.
So, um, yeah….Google released a calendar app yesterday. Go here, here, or here for the basics. Come back here for my opinions.
The Good
- It’s full-featured (for a web app) and acts as largely as you’d expect, especially if you’re familiar with iCal. It’s a very solid effort and I like it overall.
- It’s fast (again, for a web app)...I’d say it “feels” faster than Gmail. This is actually really nice, and a way in which it beats 30 Boxes.
- It’s got a “Quick Add” feature, just like the “One Box” from 30 Boxes. I’ve gotten used to this method of entry so it’s good to see they’re keeping pace.
- There’s an easy way to add the standard holidays to your calendar. This isn’t a big thing, but it is good to have.
- It can import from Outlook or iCal, although this also falls under the next category…
The Bad
- Google Calendar seems to have issues with time zones, which manifest themselves in a few different places. Import is one…I imported a calendar in iCal format and all the events were two hours off.
- Another calendar that I’m subscribed to is also time-shifted. Bummer.
- Speaking of timing, notifications are flaky. Sometimes the SMS messages are on time but sometimes not. Backpack can do this…I don’t know why other people can’t.
- There’s not a true two-way sync, though you can subscribe to your Google Calendar in iCal or other apps.
- There’s not a way to copy/paste events. I don’t know if anyone does this besides me, but no web-based calendar I know of has this feature.
- It doesn’t blow me away with any new, innovative features. It’s basically just a calendar app, on the web. Killer Gmail integration would be an example of this, but I haven’t really seen any yet. If it’s really tight, I might stick with Google Calendar. If not, there’s a good chance I’ll use the calendar feature in Backpack when it’s released.
The Miscellaneous
- 30 Boxes has said they’re not gonna take this laying down. I’ll be interested to see how they respond.
- Like I said a minute ago, Backpack will have a calendar as well. At this point, that’s the one I’m really waiting for.
Let me set the stage a little bit: I was playing around with 30 Boxes and I had an idea for how to create Backpack reminders via e-mail or SMS. I threw that together without too much hassle and I was feeling pretty good about myself.
So, a little later on, I was looking at 30 Boxes more in depth, and as I was contemplating ditching iCal I was thinking that one thing I would miss is my Backpack reminders being embedded into my calendar. Backpack lets you “subscribe” to your reminders as another calendar using the iCalendar format.
Lo and behold, I was poking around in the 30 Boxes settings when I discovered that it has the ability to display RSS feeds in an embedded manner in your calendar. It was at this point when the wheels started turning. ;)
So, I whipped up another little Rails app to serve my Backpack reminders as an RSS feed. I’ll admit it’s somewhat underwhelming to simply read this feed in your aggregator. But, if you plug it in to 30 Boxes, it’s pretty sweet.
How can I use this for myself?
Unlike my previous Backpack API hack, this one basically requires that you have a web hosting account with a provider that supports Ruby on Rails. If you’re in the market for one, I’ve been really happy with my experience at A Small Orange. I’ve also heard good things about Textdrive.
The other thing to watch out for here is security. You don’t want anyone who can guess the URL to be able to read the feed. So, I embedded a randomly generated security token in the URL that is “unguessable” for all intents and purposes. Also, I avoid storing that token in the source code in clear text by using a standard encryption algorithm. Just keep in mind you’ll need to deal with this.
To use this, the steps are more or less as follows:
- Download the Rails app (reminderfeed.zip, 64 KB).
- Edit the file
app/controllers/feed_controller.rbto include your Backpack username and API key. - Choose a security token to be embedded in your feed’s URL. In this example, let’s pretend it’s
mytoken. - Generate the SHA-1 hash of your security token using this Ruby script, and put this value in the appropriate spot on line 6 of
feed_controller.rb. - Upload the Rails app to your web host and test the URL. It should be something like
http://myhost.com/reminderfeed/feed?sectoken=mytoken.
That’s all there is to it.
How does this work?
The code here is so dead simple, it’s almost sample code. Go ahead and poke around in there if you’re interested in how it works…the files of interest are app/controllers/feed_controller.rb and app/views/feed/rss.rxml.
If you look at rss.rxml, you’ll notice that I ran into a time zone gotcha because my web host is in a different time zone then my Backpack. If anyone has suggestions on how to improve this, holla atchya boy.
So, what’s next?
Word on the street is that Backpack will grow a calendar of its own, and maybe I’ll be able to throw this code out the window. No biggie…it was still a good learning exercise and it took maybe an hour tops.
It’s no secret that I’m a huge fan of Backpack. And though it’s great to store all my miscellaneous info and personal mini-projects in one central location, I’d forget to do anything without Backpack’s reminders feature. It’s simple and it works beautifully.
The one problem I have with Backpack reminders is that I almost never think of the things I need to be reminded about when I’m sitting at a computer. And, unfortunately, the browser on my phone just takes too long to load, or else I’d use Backpack’s mobile version more often. However, the GUI on my RAZR isn’t so crappy that I can’t dash of a quick SMS before I forget my critical reminder-worthy thought.
So, what I’ve done is whipped together a quick Rails app that gives me the ability to create Backpack reminders via e-mail or SMS. Here’s how it works:
- Realize that you haven’t called Aunt Betty in a while.
- Whip out your phone and type
call aunt betty sat aftinto a new text message. - Send the message to “remindme@someaddress.com”. This can be any e-mail account you have that supports POP3.
- Sometime later, the software I wrote picks up the message and sets a Backpack reminder for Saturday at 2pm with the text
call aunt betty. - Go about your business until Saturday afternoon, when your Backpack reminder fires off, and alerts you either by e-mail or SMS.
- Call Aunt Betty and stop feeling guilty.
You can use any e-mail program to send a reminder message to the “remindme” address, which is handy when you’re in front of a computer. The SMS example above relies on the feature most cell phones have in which a text message sent to an e-mail address magically “becomes” an e-mail.
I got the idea for this after experimenting with 30 Boxes, a new online calendar app. They have a nifty little feature they call the One Box that allows you to add appointments to your calendar just by typing in something like dinner fri 6:30pm. It figures out when Friday at 6:30pm actually is and creates your appointment.
In my version of this, you can enter the date and time in either order. Here are some other examples:
Call Dave(reminds you in three hours)Pick up dry cleaning 5pm wed(time comes before date…that’s OK)Make doctor's appt tom(reminds you tomorrow at 9am)Pick up dinner 5pm(reminds you today at 5pm)Send in taxes 4/15 9:30am(You do pay your taxes, right?)Report for active duty 9/1/07 15:00(Sept 1st of next year at 3pm)Post files soon(reminds you in 10 minutes)
Those of you that use Backpack reminders already will recognize morning and afternoon corresponding to 9am and 2pm, respectively. I also added the keyword of night (or nite or even nit) to translate to 6:45pm. Call Dave later will work the same as Call Dave, reminding you in three hours. I also added soon to remind me in 10 minutes because you’d be surprised how quickly something flies out of my brain. Finally, you can enter the input text into the subject line of the e-mail or the first line of the body itself.
How can I use this for myself?
Unfortunately, I can’t host this application for you, so you’ll need to download and run it yourself. But, on the plus side, you don’t have to pay for your own web hosting account either. All you really need is a computer that can run Ruby, and a way to kick off the script to run every once in a while.
Here’s what you’ll need to do, in no particular order.
- Obtain a POP3 accessible e-mail address you’ll use for this purpose.
- Download the Rails app itself (mobilereminder.zip, 76 KB). Go here if you don’t have Ruby on Rails already.
- Edit the file
lib/checker.rbto specify your e-mail configuration. - Edit the file
lib/reminder.rbto specify your Backpack account info. - Run the Checker every so often. I used
cronto execute the following command every five minutes:
/usr/local/bin/ruby mobilereminder/script/runner ‘Checker.run’
If you actually want to set this up but are having trouble, drop me a line and I’ll try to give you a hand.
How does this work?
Essentially, I set up a cron job that kicks off the process every five minutes and POPs off all the messages. It parses each one, sets a reminder if there’s a future date, and deletes the messages. It’s pretty solid, overall…I only got one error from the cron daemon about an issue accessing the POP mailbox that didn’t resurface.
The parsing was not that hard, really, because Ruby’s such a cool language and has so many great features baked right in. This definitely would have been a bigger pain to write in Java, severely reducing the fun factor. Also, I’ll note that this took me about a week of nights and weekends to put together, and I’m not a Ruby expert. Now that I think about it, that’s probably something worth repeating: I’m not a Ruby expert or a master, wizard-level coder. If you download the code and laugh at it, that’s OK. At the same time, if you have a suggestion for improvement or want to help me out, by all means let’s chat.
Speaking of master coders, I need to give credit where credit is due and point out that this was possible to put together because the good people at 37signals have released a really nice API for Backpack. But, more than possible I’d say it was easy to put together because they went one step further and created a sweet Ruby wrapper that made the Backpack calls drop-dead simple. The only way they could have been better is to add this feature into the official Backpack product and render my silly hackery irrelevant. (Hint hint!)
There’s one gotcha to this whole thing: since there’s no way to determine which time zone your Backpack is in through the API, I had to hard code some stuff in there to offset for Central time because my web host is on Eastern time. If you run this app from within the same time zone as your Backpack, you can delete the offset stuff from the code.
So, what’s next?
Well, I mentioned at the beginning that I got the idea for this by using 30 Boxes…my next app gave me a way to display my Backpack reminders on my 30 Boxes calendar. Check it out if you’re interested.
I’ve just completed my third Ruby on Rails mini-project and it’s time for me to officially say it:
Ruby on Rails is cool.
I know, I know…you’ve never heard this before. I am the first person to ever blog this. But, rest assured, it is true.
It’s both easy and fun to whip up little web-oriented apps in Rails. Most of my experience is in Java, which is easy enough but not exactly fun. Ruby is a very neat little language with almost no “overhead.” It’s super-easy to get started and get some code running with a minimum of rigamarole.
I’m running my apps in a “beta” mode right now, and if I don’t see any bugs in the next couple of days I’ll post them soon enough. You might want to use them for yourself if you have a Backpack account and/or a 30 Boxes account.