Weather forecasts in Kronolith
During some recent quality-time I spent with my schedule (read: "trying to figure out how to add more time to a day"), I had an a-ha moment. Why am I switching back and forth between weather data and my calendar to see the weather for a day of interest in my calendar? Why can't it just display in the calendar? We already have some code in Horde that interfaces with the weather.com API (thanks to PEAR's Services_Weather package), so why not provide the weather data via the listTimeObjects API so Kronolith can pick it up?
The first step along this path was to create a new "mini" application - or an application that does nothing other than expose data via the listTimeObjects API. This resulted in the lightweight TimeObjects application that now lives in the horde-hatchery git repository. This does put another level of abstraction between the weather data and Kronolith, but what I didn't want to do was start a trend of having to write a new Kronolith Event driver for any new type of time data that might be desired. With TimeObjects, now all that is needed is to drop a new driver into TimeObjects' lib/Driver/ directory and it will be picked up and exposed via the API.
With the addition of the new TimeObjects application, Kronolith can
now display the forecast data for up to the next 5 days directly in the
calendar view. The high/low temperature along with the general
conditions for that day are displayed, with a tooltip popup showing
more detail. Currently, for this to work, you will need a contact in
Turba that is marked as your own and containing enough of your location
information to satisfy weather.com's service. Horde will also need to
be configured with the weather.com api keys...just like the weather.com
block requires. A future addition will be to allow choosing (multiple?) locations via a Google map in Horde's preferences.
Since the listTimeObjects API really isn't documented anywhere other than our source code, a little introduction may be in order. If you are not interested in Horde internals, you can skip to the end.
The API allows any Horde application to expose it's data as events to be displayed in Kronolith. For example, via this API, Turba can provide the data needed to display contact birthdays and anniversaries in Kronolith. Nag can display task due dates etc... For this to work, an application needs to expose two methods via it's own API: listTimeObjectCategories(), which returns the categories of time objects available (birthday, anniversary etc..) and listTimeObjects() which returns the actual data. The data returned includes information such as the start and end times, a title, a description, icon, and link. For more information I will direct you to the phpdoc at http://dev.horde.org.
As always, a warning that the TimeObjects code is Horde 4 only, and as such is not considered stable.
New Horde Shops Open
There are now two new Horde merchandise shops open. These Spreadshirt shops are in addition to the existing CafePress shop we have.
The shop at
Your Facebook Stream in Horde
Keeping up with Facebook's Open Stream API, Horde just got a new Horde Block, the Facebook Stream Block. With this block you can view your stream feed (filtered by any of the same filters available on your Facebook Home page), add a "like" directly from the block, update your Facebook status,
and see how many new notifications you have. This block will replace the previous Facebook Summary block that I wrote about previously.
Twitter?
Following in the footsteps of Jan, and in an effort to provide more visibility to the progress of the parts of Horde I work on, I'm going to start posting minor news and updates to my Twitter feed. I've been resisting the whole Twitter thing since, besides the fact that I don't think anyone is really that interested in me, I did not really see how it could be that useful. Since signing up though, and following a few people/projects, I can see how some people could find it useful for getting quick status updates for projects they are interested in.
So, also like Jan, you won't know how many cups of coffee I have, or how my cat's litter box smells (and trust me, you really don't want to know that), but you may find the occasional progress reports on what I'm currently working on.

