Welcome to Bloog
This is the default root page for Bloog, a simple RESTful blog/homepage on Google AppEngine, and shows what it looks like out of the box with no posts or pages. You can see a Bloog with data here or what Bloog likes like out of the box.
Bloog is open sourced under the MIT License. Source code can be found on the GitHub Bloog repository. Git allows you to easily customize the base app while later merging changes from the main repository (see here).
If you are old school and prefer a tarball of code, click here.
Bloog includes the following features:
- A resource-oriented architecture, as described in the great book RESTful Web Services
- A Drupal converter/uploader that queries a local MySQL database and uploads the data to a Bloog through REST calls.
- A datastore deletion utility that can clear out your entities in your Bloog's datastore.
- Arbitrary URL aliases, which can be created by the drupal uploader, that provide redirection from legacy urls.
There's also a programmatic aliasing function that can take a regex like
'node/(.*)'and map it to legacy IDs stored with the blog entries. (http://foo.com/node/4 is a typical Drupal url.) - A Yahoo UI AJAX front-end for posting and managing entries in a RESTful way.
- Easy code syntax highlighting for a number of programming languages.
- Sanitization of incoming HTML via Beautiful Soup parsing.
- Some modularization of look-and-feel so you can more easily modify the theme without yanking too much code apart (I hope).
- Dynamic per-article sidebars. (in progress)
From an AppEngine developer's perspective, you may find the source code a reasonable starting framework on which you can build your own application. Points of coding interest include:
- RESTful design using webapp. Accepts http verbs via overloaded POSTs using _method or X-HTTP-Method-Override headers. Simple urls provide a uniform interface with standard verbs.
- Convention-over-configuration in organizing controller and view files.
- Authorization using python decorators and built-in Google authentication.
- Caching using the memcached API and also some timing caching using global variables.
- JSON serialization for db.Model.
- Sharded counters to decrease write contentions.
- Integrated python shell using one of Google's example apps. This provides a command-line console even when running on Google's App Engine cloud.
- Serialization of a python object into a datastore blob.
- An example of full-text searching using an extended version of the appengine.ext.search module. Extensions include ways of limiting indexed properties.
If your login has administrative permission for this Bloog, you can add articles after login.