5 posts tagged “30 boxes”
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.
A couple of days ago I saw an interesting article on Slashdot (which was actually from the New York Times, oddly enough) noting that news headlines and other electronic media are getting written in a more boring and straightforward style so that people can find them easier on Google. The commenters were making jokes like “Hire me as a writer, I’m boring” but I say this is a wonderful thing.
Why? I’m all about plain text. If you can break it down into plain text you know you can slice-and-dice it a million different ways using tools that go back 30+ years. I’m thinking specifically about UNIX command line processing tools, and I’m a big fan of having them available on my Mac just a Terminal session away.
I’m glad we escaped from the CD-ROM era mostly unscathed and the only Flash-heavy web sites that anyone cares about are using Flash to play video. Plain text portability and processing is central to the whole Web 2.0 phenomenon, in my opinion. Let’s look at a few different examples, shall we?
RSS
This is the big one. The web is evolving and RSS is making that happen. And yet, for all the amazing things RSS can do, it’s an extremely simple standard based on plain text. Lightweight, “easy” standards like these are the ones that win out on the Internet.
Text-oriented UIs
It’s not too weird to see plain text win out on the content side of things, but it’s also coming back in a big way in some user interfaces. Google should get a lot of credit for this: type in a few words and get what you want. Google has gotten us all used to this.
What I really like is seeing this metaphor extended into other areas…take 30 Boxes for example. Their killer feature, in my opinion, is the thing they call the One Box, which allows you to create appointments on your calendar just by typing Meeting with Bob thu 3pm into a Google-like centrally located text box at the top of the screen.
Another example that recently crossed my radar is an online productivity suite of sorts called Zoho. One of the modules is a word processing app called Zoho Writer, which has a similar prominent search box, but this one lets you search for a feature or help. For example, I selected a piece of text, searched for bold, and when I clicked on the first search result the highlighted text was made bold. It’s a nifty product overall and I’m considering using it to write blog posts.
Formatting
Speaking of that kind of thing, Textile is another example of a new text-based tool that makes something simple. (In this case, the thing that’s simplified is formatting text.) Text-based formatting languages have been around forever, but Textile and the other examples here are also powerfully simple.
Is rich media dead? Of course not. Podcasting is a good example of a recent development in this area, and companies like Podzinger are doing great work. But it’s tough to beat plain text ‘cause it’s so darn useful.
So, how do we work with all this text? Stay tuned for Part II of this discussion.
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.