Official Chyrp Development Halted

I was saddened to recently hear that work on Chryp had officially ended. It’s really a shame, as Chyrp provided everything I needed at a fraction of the resources required by functionally-similar blog engines. It was the most aesthetically pleasing blogging engine I had come across, and it offered unparalleled simplicity.

As much as I would love to stay with Chyrp’s frozen state of code, I can’t dismiss the number of outstanding bugs on the platform. Also, as the code is relatively new, and the community relatively quiet in terms of feedback (moreso now after current events), it won’t be a security-conscious move for me to stay on board. l’ll have to find a blog engine with a similarly low footprint and a more active community.

Salvaged from the author’s site were these final words:

As you may have noticed, progress on Chyrp has grinded to a halt, and has been in that state for a long while now. It is no longer maintained. A few people have volunteered to step in, which I appreciate, but no progress has been made. Throughout this project’s timeline I can count the repeated contributors on one hand (whom I am eternally grateful for; Twig, a lot of internal refactoring, and many fixes are the result of their hard work). It’s unhealthy for a project to rely too much on one maintainer; when they lose interest the whole thing crumbles down. This is essentially what’s happened. People keep switching to, finding, or using Chyrp, which just isn’t a good idea for me to encourage given Chyrp’s current state. So now I’m announcing it’s death.

Chyrp will always be available at GitHub. Any contributors can feel free to fork my repository; I’d be more than happy to accept patches and security fixes, or add you as a committer if you seem trustworthy and active enough. But I will no longer be working on this project, I probably won’t be in the IRC channel anymore, and I can no longer guarantee that this site will stick around through server moves and such. Unless a miracle happens and Chyrp development springs from the grave (which will be judged by actions, not words).

Chyrp has been a part of my life since I first learned to program. It grew out of what is now a “hello world”: writing a blog engine. It has spanned a decent chunk of my critically-thinking life. Thanks for being a part of this project, whether you were a user or a contributor. Chyrp author’s blog

Farewell, NanoBlogger

With recent developments, I no longer have a need for NB. While it was a nice run, my faith in the longevity of the software waned when I read:

February 12, 2010 8:52 PM

Fight Bit Rot - Join The NanoBlogger Development Team Today!

In all seriousness, I’m looking for two or more people to take on developer roles. Specifically people who have skills in programming and debugging shell scripts. Even if writing code isn’t your cup of joe, just helping patch and push new releases out would be a huge boost to the project’s vitality.

I have a backlog of bugs that need fixing and can’t seem to find the time to sit down and start widdling away at them. So, anybody out there interested?

… to which there hasn’t been a single reply.

Farewell, NB, and thanks for all the fish.

Readernaut in Chyrp

Readernaut is the easiest way to share what you’re reading with friends.

Chyrp’s Readernaut module provides a sample twig:

Twig, a language specifically created for Chyrp, that is put through a compiler to produce PHP.

… that is unnecessarily complicated - it essentially tries to fit both the book title and book cover into a table column. I’d much rather allocate space for the book’s cover than it’s details given the small area to work with.

Ultimately, I modified themes/$theme/content/sidebar.twig to show:

To restrict the book listing to only show books that are currently being read, in modules/readernaut/readernaut.php:

1
2
3
4
5
6
## The actual data
public function books($limit=10) {
$config = Config::current();
$xml = simplexml_load_string(get_remote('http://readernaut.com/api/v1/xml/'.$config->readernaut_user.'/books/reading/?limit='.$limit));
return $xml->reader_book;
}

.. essentially changing the path to the reading list from books/ to books/reading/.

Backup of Chyrp

With NB, off-line backup was rather easy - essentially I was dealing with textual content from two sources that could be easily synchronized with basic shell tools.

Chyrp, on the other hand, required that I duplicate both the MySQL database and the static content, and that I had a web browser handy to access the graphical markup tools provided.

I had to dump the contents of the remote MySQL database to a local file, which could then be used to recreate the on-line database if ever the need arose. I created the following script for that purpose:

1
2
3
4
5
6
7
8
#!/bin/sh
MYSQLBACKUP=/home/$USER/.mysql_backup
DB_NAME=dump.sql
[ -f $MYSQLBACKUP/$DB_NAME.1 ] && mv -f $MYSQLBACKUP/$DB_NAME.1 $MYSQLBACKUP/$DB_NAME.2
[ -f $MYSQLBACKUP/$DB_NAME.0 ] && mv -f $MYSQLBACKUP/$DB_NAME.0 $MYSQLBACKUP/$DB_NAME.1
[ -f $MYSQLBACKUP/$DB_NAME ] && mv -f $MYSQLBACKUP/$DB_NAME $MYSQLBACKUP/$DB_NAME.0
ssh USER@host mysqldump -h MYSQL.HOST -u USER -pPASSWORD DBNAME > $MYSQLBACKUP/$DB_NAME

With a rudimentary backup method in place, I could now completely migrate away from NanoBlogger.

Themes in Chyrp

This page provides the links to modules/themes/feathers.

Installation involves downloading the zip archive, and extracting its contents to a similarly-named directory under themes/. You’d then need to activate it via the admin panel.

By the by, I was rather disappointed that the archives were only available as .zip archives. I’d much rather these archives be available in .tar.gz, or some other commonly used *nix format. To add insult to injury, several of the themes - gull and grackle - had .zip archives that produced errors when uncompressed with 7zip in Windows. These exact same archives extracted fine under OpenBSD.

Thoughts on Chyrp

I recently found out about Chyrp from a co-worker, who had been alpha-testing it for a while now. She took some time out of her busy work day to advocate its usage.

From Chyrp’s Homepage

Chyrp is a blogging engine designed to be very lightweight while retaining functionality. It is powered by PHP and has very powerful theme and extension engines, so you can personalize it however you want. The code is well-documented, and it has a very strong structure that’s loosely based on the MVC design pattern.

Upon installing Chyrp onto the bur.st host, I found it to be scalable; quick to deploy; fast to navigate; functional; aesthetically appealing; and very quick - something that couldn’t be said about NB.

One oversight made by developers of Chyrp was that, by default, noone was able to access any pages (!). As it turned out, the default .htaccess file that shipped with Chyrp-2.0, or even the git-version, did not have global-read permissions. This basically prevented the www-data system group from accessing the file, and in turn, this prevented all WWW users from viewing anything on the site. The issue was easily resolved by a $ chmod +r .htacccess.

PHP/MySQL-based Solution for Blog

While I’ve found NanoBlogger to be extremely intuitive and easy to deploy, I’ve come to the realization that bash and co. simply don’t scale well with lots of entries, and that they aren’t nearly as effective as other database-querying solutions.

On one of my sites in particular, $ nb update all took all of 10 minutes to complete - this was with a ‘quick’ 2-line hack of the display template. Pitiful performance for something I once thought was lean and mean - though I should have known that from the start.

I’m also entertaining the idea of using a perl-based CMS called BlazeBlogger. It’s reportedly very fast at serving static files, and as it is based on Perl, does not require a database. From BlazeBlogger’s About page:

BlazeBlogger is a simple to use but capable CMS for the command line. Being written in Perl as a cross-platform application, and producing static content without the need of database servers or server-side scripting, it is literally a CMS without boundaries suitable for a wide variety of web presentations, from a personal weblog to a project page, or even a company website.