On-line map services often provide a mechanism for computing the fastest or shortest route from one location to another, returning a full set of driving directions for following that route. The availability of a generous set of location data through the OpenStreetMap project, and of an application programming interface to the data, makes it much more feasible to develop such a service using only free software.
A route program might deliver customized directions for various forms of transportation -- a car, a bicycle, or even a pedestrian. It could output the total length of the route, the roads or streets that one needs to take to get from origin to destination, potentially even the turns one needs to make along the way. This would be similar to a service provided by Google Maps or MapQuest, with the difference that all computation would be performed locally instead of on a remote server.
As an additional feature, the program could also accept multiple locations as inputs, with two of them designated as the origin and destination, computing a route that leads through all of the locations.
The iCalendar format is a standard file format for exchanging appointment and calendar information, to-do lists, and daily schedules. It is defined by the Internet Engineering Task Force's Request for Comment 5545, “Internet calendaring and scheduling core object specification (iCalendar).” It is supported by many applications: Google Calendar, Microsoft Exchange Server, Lotus Notes, Facebook, Novell GroupWise, Windows Calendar, Microsoft Entourage, Sunbird, and Drupal, as well as by Evolution.
There is already a Debian package, libical-dev, that parses iCalendar files and provides an API to the resulting data structures. The linked page says, however, that this package deals with a much older version of the iCalendar format (RFC 2445 rather than RFC 5545). There is an on-line Subversion repository for libical, and the software appears to be actively maintained.
Here are some Web documents that offer additional information about iCalendar:
The initial project is to develop a procedure library for iCalendar and to illustrate its use by writing a tool that contructs a one-page representation of a user's work week, suitable for posting on a bulletin board.
You're welcome to look at the iCalendar file in which I keep my schedule. On MathLAN, it's /home/stone/public_html/misc/academic.ics, and anyone on the Internet can access and download it at http://www.cs.grinnell.edu/~stone/misc/academic.ics.
When your browser prepares to set up an encrypted connection to some Web site that you want to visit, so that you and the Web site can exchange information securely, it requests from the Web site a document called a certificate, containing a digital signature that authenticates the Web site. The certificate assures you that the Web site that you are connecting to is not a decoy. The signature comes from a certification authority that has checked out the credentials of the owner of the Web site and determined that they are legitimate. The digital signature ensures that only the certification authority could have issued the certificate (unless the certification authority accidentally exposes its cryptographic keys, or a system cracker breaks in and copies them).
In theory, a Web site can issue its own certificates and save the money, but for obvious reasons browsers are not set up (at least by default) to trust self-issued certificates, since they don't authenticate anything.
Since certification authorities can charge a fee for certifying Web sites, and sometimes receive very large ones, it's now a competitive business that many companies and organizations have gone into. There are now hundreds of certification authorities. Most browsers are set up to trust all of them.
However, the proliferation of certification authorities is now threatening to undermine the entire system. If any one of the hundreds of certification authorities that browsers trust by default is compromised, the successful system cracker can issue any number of false certificates, indistinguishable from real ones, each of which would allow a Web site to impersonate the legitimate holder of the certificate in supposedly confidential transactions with users.
Convergence is a replacement for the certification authority system. Its inventor, Moxie Marlinspike (né Matthew Rosenfeld) introduced it in a talk called “SSL and the future of authenticity” at last year's Black Hat Technical Security Conference. The basic idea of Convergence is that your Web browser, instead of asking for a certificate directly from the Web site, asks two or more other, already trusted “notary” sites to request certificates from that Web site. If the notaries agree that they have all received the same certificate from the Web site, the browser considers it sufficiently authenticated, even if it carries no digital signature.Marlinspike has a working implementation of Convergence, but his notary is written in Python, and I suspect that a version implemented in C would be faster and more reliable. The project is to develop and test such a notary, comparing its performance to the Python notary.
The EPUB file format is the official standard of the International Digital Publishing Forum for digital publications. Its key advantages are portability -- it is supported on many kinds of e-readers -- and its flexibility, particularly with respect to “reflowing” text to adapt it to the size and shape of the device on which it is displayed. The current version of the EPUB standard, version 3.0, was released in October of last year.
There is already a Debian package, libepub-dev, that parses EPUB files and provides an API to the resulting data structures. I haven't looked it over to determine what facilities it might provide for creating EPUB files.
Here are some Web documents that offer additional information about EPUB:
In “Why your printed book isn't an e-book (yet),” (The chronicle of higher education, February 16, 2012), Carol Saller points out some of the limitations of the current systems for converting academic texts into e-book formats.
The project is to develop a procedure library for constructing documents in EPUB format and to illustrate its use by writing tools for converting course Web sites to EPUB format, so that they can be distributed as e-books. Another possible application for this library is to convert the files from which the Grinnell Magazine is printed to EPUB format, so that each issue could be published in a form suitable for e-book readers.