This series is nice in that it shows working with databases (and schema migrations!), using the ring http abstraction, and hooking the two together. That said, I think that clojure is one of the worst platforms you could choose for building a blog (at least if you did it the way described in this article rather than the approach taken by things like jekyll).
I understand the choice to build a blog was arbitrary, but as a clojure dev looking at this it just looks an immensely painful process for something that should be one of the simplest things to do on the web.
I've found clojure to be a fantastic language for managing data transformations (we're using it for continuous delivery stuff at work and it's been remarkable). For static content like a blog it just seems remarkably burdensome.
There is probably a reason most clojure developers don't use blogs written in clojure.
why do you need a database for static text? at the very least why doesn't your site have basic caching so that multiple requests for one page don't take it down?
i'm not just aiming at this post (the series of articles here look good). but web pages are not new tech these days. blog sites particularly. why do we still see so many go down once they have more than zero load?
especially when the article is supposed to be teaching about web dev...
[edit: there are lots of ways of caching to static files. wordpress has plugins that do it. more recently github has popularised jekyll. you can have comments through javascript and a 3rd party - i've set up a jekyll based blog with discuss comments on bitbucket and it was easy to do. it's not even hard to write your own (my own blog is nothing exciting, sure, but for years was generated as static pages from email using just a few bash scripts).]
Yes, I use WP-Cache, but I was in the process of experimenting with my blog moving it around the servers - didn't know that internet cared :) Using WP is just convenience, nothing more than that.
Aside from your caching remark, how would you design a dynamic content system like a blog? Should blog engines like Wordpress produce and maintain a series of static files to prevent db lookups for each page?
He did say "easy to manage". I guess that's relative. Having the database always available has some conveniences (e.g. you can actually have comments on your pages instead of a JavaScript placeholder), and using a platform that's both really popular and quite mature has even more. A couple of comparisons should illustrate:
How to write a post with WordPress:
1. Click the + button
2. Write
3. Check the tags you want
4. Click publish
How to write a post with Octopress:
1. Type `rake new_post["whatever you want your title to be"]`
2. Navigate to source/posts/yyyy-mm-dd-whatever-you-want-your-title-to-be and open it
3. Type your post
4. Enter the categories in brackets at the appropriate place in the YAML front matter
5. Go back to the root of your site and type `rake generate`
6. Type `rsync -az public/ user@yourserver.com:yoursitedirectory`.
This is based on the Octopress documentation -- I've only ever used naked Jekyll, but it sounds fairly similar, so I don't think I'm being too unfair here. I'm also giving Octopress a lot of leeway by e.g. including the press of "publish" as a separate step for Wordpress but not the equivalent step of saving when writing for Octopress.
It only gets harder from there. Installing and tweaking a Wordpress theme or plugin is pretty easy. With Octopress, you actually have to sit down and code.
I get that some hackers might be into all that, but surely you can see why somebody might find Wordpress more convenient.
Thank you again for writing this series. I studied it last year as I got into Clojure programming. These are fantastic posts and I learned a great deal.
I just got started in functional programming. How is web development different with Clojure than, let's say, Haskell? What are the trade-offs between the two?
What trade-offs you encounter are going to be unique given what problem you are trying to solve with your web app, but the best way to see which suits you is just to take some time and try them out!
I understand the choice to build a blog was arbitrary, but as a clojure dev looking at this it just looks an immensely painful process for something that should be one of the simplest things to do on the web.
I've found clojure to be a fantastic language for managing data transformations (we're using it for continuous delivery stuff at work and it's been remarkable). For static content like a blog it just seems remarkably burdensome.
There is probably a reason most clojure developers don't use blogs written in clojure.