Apr 11


I like people to know where I am, in case they need to find me. I tend to have meetings in odd locations, and if someone needs to snag me between such meetings, it is useful if they have some idea where I am. So I make my calendar information public, and it is linked to from my blog. That works reasonably well for the premeditated conversations. But more and more I find people have spur of the moment questions to ask. Chat clients are great for this, and I use them a lot. But a simple ‘away’ message does not seem to work very well. Lots of people ignore them (great when the question does not have a need for instant response) or they ditch the question and never get an answer. So I attempt to keep my chat (and now other) status messages reflecting where I most likely am. Having done this for some time, I have seen a few people ask me what system I am using to do this, and so I thought I would share my process here. Not that this is the best way to get these tasks done, but it is a process that works for me. The steps involved seem logical to me, and even if the tools I use are not a good match for you, the structure may be.

 

My main computer is a Macintosh, running OS X 10.5. My shared calendaring solution is Oracle Calendar. My status messages targets are Adium, iChat, Twitter (which then feeds the status message on my blog), Facebook, and IRC (via Colloquy). 

 

To get started, I need to get my calendar information into iCal (the local mac app for calendars). This is so that the data is always available on my local machine in a way I can use in scripts. On a windows system, i would most likely target Outlook for this, as it is the most oft used calendar on that platform with lots of add ons. The UW has a way to subscribe directly to Oracle Calendar data from iCal, but it has some limitations. So i wrote an app called OraCal2iCal, and on demand it exports my Oracle Calendar data and imports it into iCal. It also adds an alarm to each event to call another application that I made, MacArthur. MacArthur sets status messages in all of the chat and web sites that I mentioned. Other mac applications that I have looked at for this that did not quite match all of my needs (but might other peoples) were moodblast and Statz.

 

MacArthur works by looking up the next calendar event in iCal, and offering up an away message of the form “At [location] for [meeting title]”. I can overwrite that suggestion if it is not what I want to set my status message. If I leave it alone, it sets the status message for the accounts I have configured to that message. It supports Adium and iChat directly, and can support others via extra scripts that it can run. In my case it generates a shell command of curl –user ‘username:password’ –data-binary ’status=StatusMessage’ http://twitter.com/statuses/update.json” (this calls a URL that uses my account credentials on twitter to set my status message. A similar thing could be done for Facebook, but I ran into an app called ‘MoodBlast” that does this in a better way, so I just call that. For my IRC status, I just put together a quick applescript that sets my status for Colloquy, and it sets my message for me if I am logged into an IRC room. I could optionally add a message into the chat room itself, but that seemed a bit too chatty.

 

Since OraCal2iCal sets an alarm on each one of my meetings to calls MacArthur, my status message will be updated with my location and meeting info even if I am away from my computer. When I return to my office, I can activate MacArthur again, but rather than letting it run automatically, I can type in whatever status message I want and hit the “Available” button, and it will set my status message to Available, and update my messages on all the apps/sites I have it configured for. It does a few other things for me as well, but they are outside the scope of this post.

 

I am also using an application called Proximity on my machine. I have paired it with my phone (it detects blue tooth devices), so that if my phone is out of range for more than 5 minutes, it will check to see if my status messages are already “Away”. If my status messages are NOT in that condition, it will launch MacArthur, and my status will be updated. If I do not have a meeting schedule for that time, my status message will simply be “I Shall Return”.

 

So in short, the steps I follow are:

1. Import calendar info into an easily accessible application

2. Set alarm on all (important) events to call app that sets status messages (or set status messages directly)

3. Configure status message changing app to look up calendar info, and set status on chat clients/sites that you care about

4. Configure a way to set all of your stats messages to Available if needed

5. Configure system to detect if you ‘wander away’ and set status messages accordingly.

 

If I were asked to suggest some things for a windows environment, I would look at;

1. Getting the calendar info into Outllook, as it looks to be the most robust calendar for this sort of thing on Windows. For Oracle Calendar users, this seems to have been easier with Outlook 2003, but there is hope that an importer for the latest release of Outlook will be available soon.

2. it may be easiest to set alarms by hand on events to start out with, and then look at automating that process. A colleague I work with has set up a twitter updating alarm on his outlook calendar and the code he is using is added at the bottom of this post if anyone wants it :).

3. I might leverage the twitter posting to drive other things like facebook and maybe even desktop chat clients, as twitter seems to be the easiest of these sorts of services to attach to these days.

4. If an automatic alarm adding thing for Outlook does not work, it might be worth just going for a solution that detects when your phone exits the space. Something like XXX may work for this, if you could make it look up your next meeting location and title and pass it along to some apps (such as calling a script such as the  twitter script above).

 

If anyone has any suggestions about how to do more stuff like this, or do it better, feel free to leave notes in the comments, or post links to support sites. This sort of thing can be fun, and is sometimes quite helpful.

 

The code and info for the outlook to twitter stuff is below:

Pre-requisite:

Download and install Twitter CLI from

http://phalacee.com/index.php?page=development&section=app&development=19

 

and install into an existing PATH (like “C:\Windows”)

 

The following Outlook macro goes into the “ThisOutlookSession” module and is executed whenever a Reminder event is fired by Outlook. Note that some of the commented sections that involving parsing text are done for my own purposes and follow my own event naming conventions, so they will need to be modified or eliminated.

 

 

Private Sub Application_Reminder(ByVal Item As Object)

 

  Select Case Item.Class

     Case olAppointment ‘26

 

          Dim strSubject As String

          Dim strLocation As String

          Dim strMessage As String

 

          strSubject = Item.Subject

 

 

           ‘Parse for non-meeting events that should not be Twitted

 

                ‘unconfirmed meetings (Oracle Calendar convention)

                If InStr(1, strSubject, “?]”) Then Exit Sub

 

                ’standard blocking of noon hour

                If InStr(1, strSubject, “Available for Lunch”) Then Exit Sub

 

                ’standard blocking of other times

                If InStr(1, strSubject, “No Meetings”) Then Exit Sub

 

                ‘Clean up Oracle Calendar attendance status crap

 

                strSubject = Replace(strSubject, “[+] “, “”)

                strSubject = Replace(strSubject, “[*+] “, “”)

                strSubject = Replace(strSubject, “[*-] “, “”)

 

                ‘Make some standard meeting locations more friendly

 

                Select Case Item.Location

                           Case “CACLST - Conf - MGH 320f”

                        strLocation = “the LST Suite meeting room”

                Case “Conf - 45plaza 210″

                        strLocation = “the 45th St. Plaza Conference Room”

                Case “Conf - 45plaza 280″

                        strLocation = “the 45th St. Plaza Conference Room”

                Case “Conf - Payables GAO Rm 109″

                        strLocation = “the Purchasing Conference Room”

                Case Else

                        strLocation = Item.Location

                End Select

 

                ‘Start building the message string for Twitter. This can be anything you want

 

                strMessage = “at the ‘” & strSubject & “‘ event “

 

                If strLocation <> “” Then

                        strMessage = strMessage & ” in ” & strLocation

                End If

 

                ‘execute the twitter command-line app and pass it strMessage

                ‘http://phalacee.com/index.php?page=development&section=app&development=19

                Call WSHRun(”twitter “”" & strMessage & “”"”, 0, False)

 

        ‘Other possible cases for a reminder object

 

        Case olContact ‘40

 

        Case olMail ‘43

 

        Case olTask ‘48

 

  End Select

End Sub

Jan 17

(For this conversation) there are two types of computer users, or ways that computer users go about doing things. Environment people and Data people. Environment people tend to go with very customized desktop computing configurations, and are super proficient with that set up. Data people don’t give a hoot about where they are, but need to be able to get at their info no matter how complex the path, or how inconsistently that data is presented to them.

 

I (like just about everyone) stratal these two camps, and struggle with the best way to get my work done. News reading (keeping up on tech - which is a big part of my job) is the latest task that is following a trend for me of moving from the Environment way to the Data way. 

 

The old (internet) way of keeping up on this sort of thing was to have a bunch of bookmarks in my favorite browser, and then open them one at a time and skim them for interesting stories. Each site had a look and feel. Some sites worked better in one browser or another, so I might have some IE and some Mozilla sets of pages I would look at. I would open all the pages at once, and stack the windows up in order, so that I could read one, close it, and be ready for the next type of info I could consume. I even wrote scripts to open and stack the collection so I could gobble them up with my lunch. Very efficient.  Then the browser support got better, and tab support in browsers came along, so I could go down to one browser for news reading (Safari), and that made the environment even more consistent and efficient. 

 

Then RSS feeds came along. And Safari’s RSS support made the transition easy. I was able to set up a bookmark collection of RSS pages, and they would alert me when they had unread stories on them. This let me get at ‘new news’ faster, but doing that breaks the Environment of reading things in a set order, and disrupts the efficiency of the mind set I used to use. The RSS reader pulls all the unique formating from the news sites (the environment becomes more consistent then, but the “type of data” queues that the web design gave are now lost as well). And due to the duplication of big news stories across feeds, I started mixing all of my RSS feeds together and sorting them by “newest” so that they tend to clump, and I can skim the headlines. I felt like I had made the logical transition to the “Data” model for this sort of work compared to what I had done before. I was able to skip duplicate data with greater ease,  I able to keep up on the ‘freshest’ news out there, and I did not re-read stories due to them not making an impression on me the first time. Some environmental efficiencies were lost, but over all, it seemed like I was done with the transition and it was a good one.

 

Then the iPhone came along. I use a laptop for a lot of things, but news reading was not one of them (I would have had to set up my book marks again, the laptop is not ’spontaneous’ due to its size, etc). But the iPhone did sync all of my RSS bookmarks off the bat. It would open them, and I could get a quick dose of news while waiting in a line somewhere. Great. But when I would go back to my Environment of reading  RSS news (Safari on my desktop) the items I had already consumed were not removed from the RSS list there. I was back to re-reading messages, but now they were not even located at the end of a collection. Old news to me was now mixed in with stuff I had not yet seen. This is jarring mentally, and messes up the efficiency of reading the news by forcing me to do some meta work regarding if I have seen some tidbit before.

 

So now I am testing out yet another step towards the data model. I am using Google Reader to handle my RSS feeds. By using a remote, web based RSS handler, I can get at it from multiple sources, and it will keep track of what I have read and what I have not. It also adds some nice “social networking” type stuff that I can “share” articles that are of interest, and anyone (especially by google talk friends) can see what I noted for sharing. I can also mark specific articles for myself alone, so I can go after them later. The grouping possible in the interface is limited, but it works well enough for me to make a “1 deep tree” that I can keep an eye on, and do some basic sorting of feeds via that. The reader itself (how it presents the data) still seems a little alien to me, and it does not do all the things I want it to (the level of expansion of stores seems to be fixed, I can not open up a full article in a new tab from the bottom of a story (I have to scroll back to the top), the built in “show original story” command opens the story in a new window rather than a tab, etc), but over all I think this move will to the Data view will be a good one. To fix the above things (really Environment issues) I think I will look into some of the desktop reader solutions, and see if those help. The idea is that I hope to get a good, efficient desktop Environment solution, but keep all the tracking in the open, shared, accessible Data solution.

 

This is clearly one of the things the Web2.0 stuff is all about. The interesting thing will be what happens when this becomes more and more successful. The big companies depend a lot on brand recognition/loyalty. Those are currently Environmental sorts of things. Google seems to be trying to move past that in some ways (you do google searches from all sorts of different places without ever SEEING google, you mix and match their technologies with others to get new tools outside of their space, etc), and I like that a lot. I respect it. But I don’t know yet if it makes me loyal. If I find a better remote RSS tracker thing than Google Reader, I will probably jump on it, and it will probably be easier than any of the transitions above. I guess to keep relevant in the minds of the Data folk, a company is just  going to have to keep producing the best products, and not let anyone get too far ahead of them. 

Jan 08

I have had use of an iPhone for a few months now, and I have not really posted any thoughts on the system yet, so I thought I would jot down a few things I have done to make my life work better with the device, some example uses, and an idea of one thing to make it better.

 

To make the device work a bit better for me, there are two simple things that took me a while to get quite right. 

 

The first was getting my bookmarks in order. I was in good shape to start with, as I was already using Safari to organize the sites I use most often, and they were categorized by the type of work that I do. This synced to the iPhone with no problem, but these links were for the main web page of a site, and there are more and more ‘iPhone optimized’ versions of sites out there. So I created an iPhone collection of bookmarks to hold links to these sorts of sites. That worked reasonably well, and once I moved that collection to my “bookmarks bar” (ie I put it up as a peer collection to my other collections) I have found that navigating between this collection and my ‘organization based’ collections is faster, and the iPhone group does not get in the way.

 

The second thing I needed to do was to copy and paste email addresses. This is not supported on the iPhone (no copy and paste at all). I have some FAQ sorts of things that come to me, and so being able to forward a canned response a few times a week saves me a lot of typing. But my brain is too old to memorize complex email addresses. So what I have created and addressbook entry for a user with the name • • (those are option 8 characters - this sorts this person to the bottom of the iPhone contacts list, and does not make the name that shows up in the email look too strange). Then if I need to copy and address, I just add it to my • • user, with a custom type of the current date. Then I go into the message I want to forward (I keep some as postponed message for easy access to the most used ones) and then add that address in to the ‘to’ filed. All I have to remember is the date :).

 

As for personal use stories of the iPhone, the most surprising to me was what a great alarm clock it is. I sleep light, so its ‘waking’ ability is not the real benefit here. The jem for me is that as soon as I turn off the alarm, I am holding a device that has all the email that came in while I was sleeping, and knows my calendar. By the time I stager in to brush my teeth in the morning, i am aware of what is waiting for me at work. Forwarding my office phone to the device has also been a major boon in keeping in contact with people looking for me.

 

My idea for improvement is a simple one. I have not yet sent it to apple via their suggestion path, as I am waiting for the next (soon) update to the iPhone to come out, to make sure it is not already there (no need to make work for others if it is not needed.

 

I lock my iPhone. I was looking at the screen the other day, and realized that if I lost the phone, the average person would have no way to contact me to let me know they had it. An emergency technician would not be able to look in my address book for an ICE contact item.

 

I think the answer to this is simple, and might even save a life down the line. I think that part of the iPhone configuration should be the creation of a dedicated “emergency contact” entry on the phone. This system could ask for any known medical conditions, allergies, or special considerations, as well as emergency and personal contact information (in the form of phone numbers). A picture of yourself (for identification purposes in case of real emergency) should be included. This information could then be stored as part of the contacts list on the phone, labeled in a way that emergency staff could find it easily, and a link that allows viewing of this contact entry could be added to the ‘lock screen’ of the iPhone.

 

But that is probably enough rambling about the iPhone for now. There may be more soon, as the new software should be available shortly :).


Dec 07

I have modified my blog so that it now is my main page:

http://staff.washington.edu/dcox

rather than a sub page. The files still live in the sub page, so the old URLs should continue to work, but I think I will be ‘hiding’ where the files live from now on, as that will ease updates in the future.

This move was done by following the instructions that Jacob pointed out to me under the “options” menu of the workdpress admin pages.

Dec 05

I set up this blog 2 days ago. Yesterday I added content. Last night, I got SPAM comments. *sigh*

I do not (yet) want to set up user authentication for this blog, as I do not expect it to be a heavy site for back and forth communication. But I also do not want to get exciting emails that someone wants to chat with me about something I find interesting, only to find some exciting opportunity that is not fit for conversation in this venue.

As with most of my web based problems, I went and complained to Craig. He found the WordPress plugin for reCAPTCHA. I have been wanting to do something with reCAPTCHA for a while now, but I have not had a reason. reCAPTCHA is one of those “prove you are a human by tying in the word hidden in the squiggle above” things. The nice thing about reCAPTCHA is that it is doing a good deed every time you use it. The words that you type into it to prove your humanity are used to digitize old books that OCR software is having a problem with.

Everyone (but the spammers) wins.

The wordpress plugin can be found at:

http://recaptcha.net/plugins/wordpress/

Dec 03

This is a test to see if the ‘mobileadmin’ plugin will let me use an iPhone to make a fresh post to this blog. The default confit would not let me type into the content area. This plugin seems to do the trick though.

Dec 03

I am attempting to move over to a real blog environment. WordPress is the supported (sort of) solution here on campus. After spending an hour or so figuring out all the bits (mostly MySQL and PHPMyAdmin) I think I am up and running. Now I just have to figure out what blogging is really all about, and how I might use it. I hope this will help me to make more posts than I did with my last system. I will move the old content into this new environment as well, just so it is not lost. 

Jul 25

I don’t have an iPhone, but I have seen one on TV. I guess that is close enough to being an expert on the things, as I have had several folks ask for my advice on them. In reality, most of the questions I have been getting are about getting the UW shared calendaring data onto the iPhone from a Mac. I am being asked as I have worked on this for a while so that my calendar ends up on my iPod and my non-iPhone.

At the UW, we (my group anyway) are currently using Oracle Collaborative Suite for our shared calendar. I have recently moved onto a more up-to-date version of this calendar, and I have run into some new options and new issues with calendar syncing. The new options are in the form of some home grown tools written by the calendar admins that allow me to subscribe to my Oracle Calendar as if it were any regular published iCal calendar. But this solution still has some issues, and I thought I would post a few thoughts on this issue here, rather than repeating myself so much in email.

The problem with subscribing this way is that the first event of repeating
events does not show up. This is due to iCal not understaning the exact way that Oracle is creating repeating events. As far as my testing goes, this seems to be an issue with the latest Oracle calendaring software running on 10g servers. This problem is also seen if you use the Mac desktop client to export calendar data by hand, and then import it into iCal.

The great benefit of subscribing to this calendar is that the data is automatically updated in my local iCal application each time it syncs (this is scheduled in iCal when you subscribe). So new events make it onto my iPod (and other people’s iPhones).

But missing the first event of every repeating event is just not a safe way to deal with your calendar. So I also use (and wrote) OraCal2iCal, which exports calendar data from the Mac Desktop Oracle Calendar application, and imports it into iCal. As of version 2.9.6 it also corrects this “missing first event” issue for normal events (it still remains for repeating all day events). It also allows me to add alarms and other ‘good things’ to my events. The problem is that you have to run OraCal2iCal each time you want to refresh your data.

I do end up with duplicates of mot of my events on my iPod with this approach, but I am would much rather deal with that than to not have the data I want at all.

In addition to dealing with our local calendar data, I have also been asked about access to google calendar data for the iPhone. Both Google Calendar and the Oracle Calendar data are accessable via web pages, but it is sort of a pain for quick lookup sorts of things. So I dug at the iCal options for getting this as well. This seems to be a more understood issue out in the world than the Oracle stuff, but I thought I might as well add it here as long as I was babbling away.

If you have some Google Calendars that you want on your iPhone:

In your Google Calendar, you should be able to click on the “Manage calendars” link and then see the calendars that is of interest to you. Now you can click on the title of the calendar you wish to work with (note that you do NOT need to share the calendar to do this, but you can if you like). Once you are looking at the details for this calendar, you can scroll down to the bottom, and you will see a buttons for “XML”, “ICAL”, and “HTML”. You have one set of buttons for “Public” calendars, and one for “Private”. If you click on the private “ICAL” button you will be given a URL that you can subscribe to in iCal, and you will not be required to make your Google Calendar any more public than that.

With all of these calendar solutions, be sure to watch for timezone issues. They are a pain in the rear.

May 23

I have had the opportunity to give a few talks recently, and so I needed to put together a few slide stacks to keep things on target. For years now, people have been complaining about PowerPoint presentations being dull, and no one likes to see someone read from the screen. But at the same time, every presentation I give comes with a request to make the slides available for download and review by people who are not able to make the talk, or by those who want to use the slides as “notes” from the talk.

So for my last solo presentation, I tried something a bit new. I outlined what content I wanted to cover in regards to slides (to get a count and a ‘content idea’ for each slide). Then I typed out the content that I wanted to cover in each slide in some detail. I then made very text-light slides (mostly images), and then copied the text that I had written into the notes section for each slide. My hope was that the slides would not be distracting text blocks that take focus away from what I am saying, AND that the slide show would be rich with info for those that download it later.

I have not gotten any feedback yet from folks who have downloaded the slides, but the folks in the audience seemed to like the idea, as the system I was talking about had several specks that would have been too much to list on the slides. I told them that the details were in the slide notes, and that seemed to make the tech folks looking for details happy.

I think that this type of production will work well for me, as I sort of like to script out a rough draft of what I am going to say anyway (not to be read from or anything, just as a tool to organize my thoughts) and most of the presentations that I give lend themselves to a visual place-holder model (or graphs). It also helps that I am usually at a conference, and there are lots of other powerpoint slides going on all day, so something a little less text filled is usually a relief to a group that is tired of reading over a presenters shoulder.

Apr 22

After my last post about the possibility of using an appleTV to provide a “public collaborative consumption” space for a departments published podcast media, I got a chance to poke at one at the bookstore to test out some concerns that I had.

The big worry that I had was proved true. There is no protection on the device from inadvertent (or even intentional) breaking or overwriting the default sync that you set up. Since the device is created with the living room in mind, this is not too surprising. If you have access to the remote control, you can tell the system to “stop syncing” with the machine is is paired with. If you wish to synch it to a new system, or even stream content to the appleTV, you will be required to enter a PIN that shows up on the TV screen into your computers copy of iTunes. This is protection (so clearly the design of the device took this into account) but this is to protect the owner of the content from having it watched without direct permission. I would like to see the ability to long the sync configuration on the appleTV with a PIN as well. There would have to be an easy way to reset the PIN for the home user (something like the way that apple already has to reset one of their wireless base stations would seem reasonable).

This limitation on the device makes it not a very good match for public use. A private network between the sync computer and the appleTV could protect the system from being synced to some “odd” content, but the manager of the system would still have to check the system to see if it was still synced to the server, and reconfigure it by hand it if was not. Students would also not be able to share (via streaming) their own content if the appleTV was not on a network they could share. This might drive some of them to unsync the system, not out of malicious intent, but rather in attempting to find a way to make the device see their computer. The would then be unable to sync the system back to the mater computer even if they wished to.

But I still see value in the idea of a public, elegant system for showcasing and sharing the content of a department or group. Perhaps one of the other media-center solutions out there would be a more controllable system for this sort of use. If a full computer were used, it might be possible to add more features to this system as well (informative screen savers, customized personal interface, etc). I have looked into making a Mac server this purpose by running FrontRow (the bundled Mac media center) for this purpose over the weekend. It looks like it would work well, and would provide a few new features (internet radio, screensavers, remote control, monitoring, etc) with little work. But it would be a full computer to maintain.