projects
The Universal Timeline Aggregator
By Arto on Fri, 2006-12-29 18:37. atom | Drupal | JSON | mashups | projects | RSS | services | SimplePie | timeline
For those who haven’t yet come across it somewhere on the web, may I recommend checking out the Timeline widget developed by David F. Huynh of the MIT Simile project. It’s a snazzy DHTML/JavaScript tool for visualizing chronological events on a scrollable, graphical timeline — sort of a Google Maps for temporal information.
I’ve been working quite a bit with the Simile widget lately, co-developing (with David Donohue) a module that integrates the widget into Drupal, allowing Drupal sites to display any CCK / Views content as graphical timelines.
Today, inspired by Alexandre Passant’s RSS2Timeline implementation, I sat down to code up a generic web service that can take any Atom or RSS feed and convert it into a JSON-based event source for the Timeline widget. My goal was to make it absolutely trivial to embed live Atom/RSS timelines into blogs and whatnot, so that anyone with basic HTML skills could use timelines without having to go through the relatively complex technical setup the widget requires.
I hereby present the Universal Timeline Aggregator , available at http://timeline.to/ (I’ve been snapping up Tonga’s dot-to domains since getting the ultimate vanity domain, ar.to, as a Christmas present; the “to” preposition works rather nicely for the present purpose, too.)
Easier Drupal Debugging with Trace
By Arto on Sun, 2006-12-03 23:28. debugging | Drupal | modules | PHP | projects | trace![]()
Trace is a project that started, like these things tend to, as an innocent, experimental Drupal module I hacked together to implement all of the core hooks exported by Drupal.
I was at the time working on Boost and wanted to gain a deeper understanding of the conditions and exact sequence in which the Drupal module hooks were invoked, so I took the API listing and wrote out the skeleton for each hook, sprinkling logging statements to capture and output the arguments passed to the hooks by Drupal.
GeoIP API for Chicken Scheme
By Arto on Mon, 2006-06-19 21:05. API | Chicken | DNS | GeoIP | Lisp | projects | SchemeGeoIP is a IP geolocation library and database developed by MaxMind. They provide a freely available GeoLite Country database that maps IP address blocks to country codes (with a claimed 97% accuracy), and sell several subscription-based commercial databases that provide more fine-grained geolocation services such as determining the exact region or city based on an IP address.
Geolocation is useful in a number of areas. For example, geolocation services can be used in web applications to customize content or target ads regionally, to select the geographically closest mirror server, or to analyze web server logs to determine the countries that visitors originate from.
As part of a distributed, geographically load-balanced DNS daemon I’ve been developing in Scheme, I’ve put together a set of GeoIP API bindings for Chicken Scheme that I’m hereby making available under the MIT License.
This was the first egg I’ve developed for Chicken — not to mention the first time I’d needed to make any real use of Chicken’s FFI — and I have to say I was pleasantly surprised at how easy it was to create.
It was gratifying to be able to go from zero to completed egg in only a couple hours simply by looking at some other eggs for examples on how to use foreign-lambda , create a setup spec, and write the eggdoc documentation.
The GeoIP API subset provided by the egg is straightforward to use. Basically, you feed in a hostname or an IP address, and you get back a country code or country name. Country codes can be returned as either the 2-letter or 3-letter codes defined in ISO-3166-1.
Static Page Caching for Drupal 4.7
By Arto on Sun, 2006-05-28 20:34. caching | Drupal | modules | performance | PHP | projectsThis weekend I tackled coding up a Drupal feature I’ve been sorely missing on many a past project: static page caching. My yet-to-be-named module is a replacement for Drupal 4.7’s built-in caching. Instead of storing the pre-generated cached pages in the database, the module stores them in a cache directory on the file system.
Big deal, right? Actually, as I’ll demonstrate below, it makes all the difference.
