/urblog

An Ur/Web-based blog system

NOTE: This is not the right version to be using for most people.  
Most people will instead want the (tested, working) code included with the Ur/Web tutorial at:
http://expdev.net/urtutorial/
or on GitHub at: https://github.com/gian/urtutorial

Urblog

This is a very basic blog system implemented in Ur/Web:

http://www.impredicative.com/ur/

It's probably not suitable for real-world use.

In the simplest case, compiling could work like this:

# urweb urblog

You will need to import the generated urblog.sql file into your database to
generate the appropriate tables.

If you're actually serious about compiling this, you should probably read the
Ur/Web documentation to figure out how using your particular database engine.

The generated binary should be called 'urblog', and can be invoked with:

# ./urblog

Urblog can then be accessed using the URL:

http://localhost:8080/Urblog/main

There is a 'user' table, but in reality only one user is supported (User ID 1)
creating this user account is left as an exercise to the reader.

Upon logging in, you should be able to create, update and delete blog posts
using the "New Entry" link in the top-left corner.

There is simple blog markup, consisting of the following tags:

Bold: [b]some text[/b]
Italics: [i]some text[/i]
Image: [img]http://www.example.org/example.jpg[/img]

Paragraphs are formed by following some text with two newlines.

The blog markup parser is pretty fragile.  Invalid markup will probably cause
harm to people and property.

This was essentially just a learning project, and an experiment in the
use of Ur/Web, so I present here my collected wish list of Ur/Web features:

Ur/Web wishlist

* something that returns the current time as a value of type 'time'.

* a 'bless_xml' function, that takes a string containing XML,
  checks that it is valid, and then returns the result of parsing
  the XML/HTML contained within that string.

* When getting column names wrong, error messages are pretty unhelpful.
  Not sure if this is easy to detect, but at least seeing words to the effect
  of "you might have got a column name wrong" would probably make it
  considerably more user-friendly.

* md5 or sha1 function, defined at least on strings (but preferably over all 
  types!)

* A 'log' or 'debug' function that allows me to do imperative IO at my own 
  risk, which is dumped to stderr.