Lets Get Dugg!



I am releasing Typeface today. This is a blogging application written ontop of Catalyst. You can go ahead and download the release right here.

Typeface-0.2.tbz2


My second release of Typeface. Lots of bugs have been fixed revolving around datetime. I have also included three schema files for mysql,sqlite,pgsql to bootstrap the initial database.

Enjoy

Typeface-0.3


well, hopefully this release will go smoother. I forgot to remove specific tidbits from testing that got included in 0.03. This should be a more polished release.

Fixed:
IE render width issue.
Removed all traces of lets get dugg.

New Features:
Template support.
Site title configurable in YAML

Typeface-0.4.tbz2


- Fourth release, a bit more user friendly than before.

Fixed:
Fixed all remaining IE render issues.
Cleaned up CSS.
Fixed caching issues with cache::store::fastmmap.
Code clean up.
Fixed miscellaneous metaweblog xmlrpc issues.
Fixed time in words to not be dependent on a single time zone.
Cleaned up documentation.

New Features:
Added install script to bootstrap the initial user.


New version of Typeface. One too many things to list of what has changed. Just check it out for your self.


Instead of sitting on this any longer, I decided to release Typeface 0.7. Typeface has been updated to utilize the recent Catalyst::Controller::FormBuilder module. I have also included two new ported WordPress themes Chaotic Soul and Connections. Since refactoring the template view, porting WordPress themes is extremely trivial now.

You can find the release at http://typeface-project.org/

-Victor


Quick blurb concerning Typeface

I have been off in Java Wicket Land for the past month or two. In this time, I have let Typeface slide without putting out much needed maintenance releases for the various quirks currently found in Typeface. Anyway, I hope to get a new release of Typeface in a few days or so that will fix some of the rough edges.


Just wanted to wish everyone a happy new year. A new Typeface release is imminent. The new revision has a vastly snappier Dojo backend due to optimization. The Typeface release will include two new extra themes; connections and chaoticsoul.

I have also been working on Catalyst::Controller::FormBuilder::DBIC. This module builds FormBuilder interfaces based off DBIC schemas. It should make developing CRUD applications in Catalyst a snap. The unique thing that makes this stand out from other solutions such as Rails scaffolding or the Django admin backend is that Catalyst::Controller::FormBuilder::DBIC builds a formbuilder object at runtime which can be modified in the controller action before sending it off to the view. This enables you to modify any details on the form before displaying to the user. Since no code is written you don't have to scaffold, rewrite and repeat.

Should look something like this:


Not everyone chooses to go the FCGI way of deploying their web applications. Some people, like I, prefer deploying applications under Catalyst's httpd or Rails' Mongrel. Unfortunately, Lighttpd at this time (version 1.4.13) has a inept mod_proxy module. It does not load balance correctly and nor does it recover from a downed proxy node, requiring a full restart. Obviously this is unacceptable when it comes to a production system.

deployment

Pound comes in and saves the day. It is a fast load balancing proxy that claims it can handle 600 requests/sec. The deployment of choice here is Lighttpd => Pound => web application. However, there is a small snag, Pound appends X-Forwarded-for headers without an option to disable it. So every request that comes in from Pound to your web application comes with "X-Forwarded-For: 127.0.0.1." This means you can't tell from where the client came from. Here is the solution to remedy this issue, but it requires some hacking on the Pound source.

Open http.c and comment out line 902 and 903
====

You basically want to comment out the top two lines. With this out of the way Pound does not append the extra X-Forwarded-for headers. You should now be able to receive the originating IP address of the client connected to your web application.

Now to finish up. Configuring Lighttpd to pass along to Pound and then to your web application.

Sample Lighttpd configuration

$HTTP["host"] =~ "^letsgetdugg.com$|^www.letsgetdugg.com$" {
    server.document-root        ="/home/victori/servers/letsgetdugg/root"
    dir-listing.activate        = "disable"
    accesslog.filename          = "/var/www/lighttpd/log/letsgetdugg.access.log"
    server.errorlog             = "/var/www/lighttpd/log/letsgetdugg.error.log"
    $HTTP["url"] !~ "static/" {
        proxy.server = ( "" => ( "Letsgetdugg" => ( "host" => "127.0.0.1" , "port" => 7999, "check-local" => "disable" )))	 
    }
}

We make sure that anything in /static does not get sent to your web application but gets processed by Lighttpd.

Sample Pound configuration

ListenHTTP 
  Address 127.0.0.1 
  Port    7999 
  Service
    HeadRequire "Host: .*letsgetdugg.com.*"
    BackEnd
      Address 127.0.0.1
      Port    9010
    End
    BackEnd
      Address 127.0.0.1
      Port    9011
    End
    BackEnd
      Address 127.0.0.1
      Port    9012
    End
  End

Thats all! This deployment should suffice till Lighttpd 1.5 goes stable.