Philo 0.9.1 Released

Philo version 0.9.1 has been released. This release brings performance improvements, an abandonment of built-in tags in favor of Alex Gaynor's django-taggit, and more! If you haven't yet, I highly recommend checking it out.

Philo 0.9 Released

Since the autumn of 2010, Philo has been powering Oberlin College's new OnCampus portal. For even longer, it has been powering this, my personal website. And now, I'm pleased to announce that Philo version 0.9, our first versioned release, is out. I encourage you to check it out, and perhaps even contribute, if you're at all interested in Python and Django content management systems.

iThink Software goes open source

Beginning in January, I'd been working to move much of the code we wrote at [iThink Software]( to open source. I'm happy to say that I am now satisfied with the result: [a redmine installation](, and [git repositories](

Haven Fundamentals Part Two

Haven consists of a daemon (referred to as havend) and a library for communicating with that daemon (referred to as libhaven). Individual computers will run a single instance of havend, and any other software (referred to as client software) running on those computers which requires access to the database utilizes the libhaven library to communicate with the local instance of havend.

Haven Fundamentals Part One

At the lowest level, Haven utilizes a document-oriented, schema-less database. I'll use the term "object" where other systems would use "document", to avoid connotations of "document" that are not appropriate at such a low level. Objects have a UUID to define their identity, and an arbitrary number of key/value pairs as content. Key names are informally standardized using reverse-DNS semantics. All objects, once assigned a UUID, are immutable. The immutability of objects referenced by a given UUID allows for the Haven database to be distributed over many, perhaps distant, computers. Ideally, there is only one Haven database (or, object namespace) for all eternity.

Prelude to Haven

I often find myself thinking about how the next great computing environment should function. Although computer hardware has advanced considerably over time, the user-oriented software that allows us access to that hardware's potential has been stuck. We're constantly rehashing the same tired metaphors that were developed decades ago: keyboards, mice, windows, icons, files, applications, clients, servers, users, passwords, and so on. A little more than a year ago, I started thinking about how the computers of the future should store and access data. After much refactoring of my ideas and their consequences, I have settled on a system that I call Haven, which I will be describing in this and later posts. This first post will talk about the sorts of problems that I have attempted to solve.