I'm a huge fan of Remember The Milk and GNU Emacs. So much so, that I've given them both money over the years. And now I've (kind of) combined them. I just pushed slack-rtm to GitHub.

I've kind of avoided Emacs Lisp, the 1984 Subaru of Lisp. While I've done some minor hacking of my .emacs in the two years I've been using Emacs, I have not really done any serious programming in it. But with this, I'm hoping to remedy that a bit. It's been fine so far, even though the learning curve has been steep. I don't think I'll be writing a JavaScript interpreter anytime soon.

Right now, it's pretty simple. It just creates a buffer and shoves your tasks into it. I've only tested it on GNU Emacs 23.1.50.1. Ultimately, I'd like it to sync between an orgmode file and RTM, kind of like what Sacha Chua did with org-toodledo.

So, have at it. Feel free to fork it and send me pull requests. I'm hoping to release early (DONE!) and often.

Not really. And my name's not Sheena. But I did make a contribution to the awesome console based newsreader Newsbeuter. If you want to see my patch, it's available on Github. I fixed a problem with the way that it authenticated against Google Reader API.

As for Newsbeuter, if you like doing everything from the commandline, this is the newsreader for you. Lots of features like keyboard shortcuts that can be reconfigured easily and query feeds so you can create your own pipe.

Not only is the tool itself very nice (a slick in-browser editor with syntax highlighting and context sensitive prompts), the tutorials are as well. In a little under 15 minutes while reading the tutorial I was able to write a script that emails you the next 10 days events from any calendar. It uses JavaScript so if you are familiar with that, then you could probably even do it quicker than me and my old brain.

A pet peeve that I have is that the daily email I get from Google Calendar doesn't include my contact's birthdays. Even if it did, it'd only be for that day which would be too late for me to drop a card in the mail. And even if did that, it wouldn't send the email to my wife. Thus, the following script was born.

// how many days in advancevarINTERVAL=10;// the calendar to grabvarCALENDAR="Contacts' birthdays and events";// who to send it tovarEMAIL_TO="email1@somewhere.com,email2@somewhere.com";// the subject to usevarSUBJECT="Birthdays for Seth next "+INTERVAL+" days "functiononOpen(){varsubmenu=[{name:"Send Birthday List",functionName:"sendBirthdayList"}];SpreadsheetApp.getActiveSpreadsheet().addMenu('Birthdays',submenu);}functionsendBirthdayList(){// Get the event template string from the spreadsheetvaremailTemplate=SpreadsheetApp.getActiveSheet().getRange("b2").getValue();vareventTemplate=SpreadsheetApp.getActiveSheet().getRange("b3").getValue();// Get the next INTERVAL daysvarstart=newDate();varend=newDate(start.getTime()+1000*60*60*24*10);varcal=CalendarApp.openByName(CALENDAR);varevents=cal.getEvents(start,end);// Add each event to the emailvareventLines="";for(vareinevents){varevent=events[e];eventLines+=eventTemplate.replace("<TITLE>",event.getTitle()).replace("<DAY>",event.getEndTime().toLocaleDateString()).replace("'s birthday","");}varemail=emailTemplate.replace("<EVENTS>",eventLines);MailApp.sendEmail(EMAIL_TO,SUBJECT+now.toLocaleDateString(),email);}

Lo! Better living through technology.

Right now, I have the template for the email stored in two cells in a spreadsheet and other configuration info at the top of the script. Those could probably go in cell data too, just so it'd be easier to share this script. But it should give you an idea of lovely it is touse Google Apps Script.

Using the triggers that are built-in (Triggers < Current script triggers...), I have it scheduled to email us every 3 days at midnight. So, hopefully, I won't be missing any birthdays.

One thing I found interesting was that many of the essays made reference to the suggestion from The Pragmatic Programmer: From Journeyman to Master to learn one new langauage every year. The suggestion by itself wasn't interesting. I think many people have heard it. The thing that intrigued me about it was that "The Pragmatic Programmer" is published by Addison-Wesley. I don't think I've seen such overt references to other publishers' books in a programming book before.

It hides the huge header, makes the title of the issue much more prominent and fixes some other formatting nits I disliked. Information that I think is more important is moved up to the top as well. But there are also perks you can't see. You can use the keyboard to do pretty much anything you need to: comment, resolve, browse the URL, search, navigate between comments a la gmail, etc. Once you have it installed, just press ? to see all the keyboard shortcuts.

It's up on GitHub so feel free to fork it and make any modifications you'd like to see.

This is probably way late but The Pragmatic Bookshelf, publishers of fine programming books, have launched a free monthly magazine called PragPub that covers a variety of topics. For instance, this month has a nice overview of how to use Sass. Past topics have included articles about Clojure, automating screencasts and managing life projects.

Granted, they are ultimately pushing their books (which I think are excellent) but they are releasing the magazine in PDF, epub and mobi. How cool is that?

I love reading. It's how I get most my knowledge (or lack thereof). And I also really like bookmarklets. They make browsing the web much easier.

And I found this great bookmarklet that let's you find a book that you are viewing on Amazon.com at your local library. It's called xISBN Bookmarklet. I just call it 'library lookup v2.' It was inspired by Jon Udell's LibraryLookup which I used to use so I just updated the version.

It's really easy to set up and use. Set up is covered on its page under "Try xISBN Bookmarkets." One thing you'll need in advance is to know the base URL of your library's catalog. Mine is http://catalog.colapl.org for example.

Using it is even eaiser. You just look at a page on Amazon or Barnes and Noble and click the bookmarklet. Or if there's a ISBN on a page, you can just select it and click the bookmarklet. It'll take you to a page like this.

Depending on your library, you could place a hold on it and then pick it up. Remember, support your local library!

OK, so it's been over a year since my last post (of which I completed all except two). But here I am now with a wonderful new design, thanks to Sprout Creative and a new outlook on blogging.

I've taken a bit of a different approach to blogging this time. Instead of using a content management system like Wordpress or Movable Type, I'm opting for static html. The pages are generated by Jekyll after being written in GNU Emacs. I'm hoping that this tool set makes it easier for me to get posts up. Let me know if you have any questions about the process or if you have any comments about the design.

We'll see if it sticks. If you don't hear from me for another year, then you'll know that this little experiment failed.

I've been using Dojo for a couple of months now and I really like it as it makes writing cross-browser JavaScript a breeze.

I've also been using Emacs with YASnippet for a bit now too. YASnippet is a plugin for Emacs that allows you to define a snippet that'll get transformed into something much bigger in your file. It saves you a lot of typing as you can define areas in your snippet where you get prompted to enter text and it'll autofill with your entries. Very handy, let me tell you. There's a screencast on YouTube showing how powerful it is.

Which brings me to the point of this post. I've created a package of snippets aimed at people writing Dojo based JavaScript. It's hosted up on GitHub if you would like to use it. Currently, it only includes (what I feel to be) the major functions but feel free to contact me if you'd like to add more.