Hacker News new | ask | show | jobs
by mtigas 5097 days ago
It was an itch I wanted to scratch. I’d been tempted to convert my entire (Django-based) blog over to something like Hyde[1], but wanted a bit more flexibility than the framework provided.

In most applications I work on, I lovingly use and abuse Memcached, Redis, and Varnish. If you’re working on an application that warrants using a live website and the whole application server shebang, then yes, I’d agree with you.

But for something like my blog and other non-dynamic websites which don’t update very much at all, I’m not sure if I see a pressing need for an application server. My blog previously ran varnish-nginx-uwsgi-django, but I was moving off of a VPS and it was the last thing left on that server. I got curious.

In the case of something like the L.A. Times’ Data Desk[2] projects (who use their own django-bakery app), if some views are very expensive/slow to generate, you can offload the work from the application server and do it in advance. (This makes sense if you want to just render everything out on a fast workstation or if you have a local database of several hundred gigabytes that you don’t want a live server querying to crunch the data.) It’s not out of the question to pregenerate HTML pages, JSON for visualizations, and simple image files (generated in PIL).

In any case: it’s not so much a question of “high traffic apps” as much as the tradeoff between (computation cost + server maintenance cost) and (app that is server-side dynamic or updates frequently). Most people don’t want to configure and maintain an app server (with cache layers and all) for a simple app and those that don’t seem to have uptime issues the moment they get any legitimate traffic: see [3].

So:

* I decided I didn’t want to maintain an app server for my blog, and my historical average for updates is about once every four weeks (or even more infrequent). * People seemed to be big fans of Jekyll/Hyde, Movable Type’s static publishing mode[4], WP Super Cache, etc. * I felt a Django-friendly analogue to those would be cool. * Like any developer tinkering with their own blog, there didn’t have to be a point.

[1]: http://pypi.python.org/pypi/hyde/ [2]: http://datadesk.latimes.com/ [3]: http://inessential.com/2011/03/16/a_plea_for_baked_weblogs [4]: http://daringfireball.net/linked/2011/03/18/brent-baked

1 comments

I'm wondering, what kind of dynamic features were you interested in for a blog that you update once per month? Why not just edit static files on S3?
I'm actually coming up on ten years of having the same blog: waaaayyyyy back when I started, I was editing all my pages manually. (Though blog posts didn’t have permalinks, it was just a growing massive "list page" that I’d break off and paginate every so often.) It started to become a pain in situations where I wanted to modify some basic aspect of every page: I’ve consistently gotten the itch to either re-architect or re-design my blog annually.

You really can’t beat a system that uses templates.

I'd tried my own Javascript-based content system in the past (where everything is based on one HTML page and JS loads the page content), but those add a bit more client-side complexity (not to mention search engine reachability).

I think the ability to regenerate an entire 500+ page static HTML site is pretty powerful and useful. (Also: who wants to manually update date-based URL paths every time there’s a new thing? http://v3.mike.tig.as/blog/2012/06/30/ http://v3.mike.tig.as/blog/2012/06/ http://v3.mike.tig.as/blog/2012/ etc.)

EDIT: As to your first question wrt "dynamic features I wanted": CMS and full control over my site's behavior and templates. It’s Django-based, too, so I can theoretically extend it with any features as necessary. (I also have plenty of "non-published" content that I can view on the local, "hot type" development server of my site, but the "renderer" file is only configured to upload blog posts marked as "live". I find that feature pretty useful.)

I see how you can use this :) It's actually a pretty great idea for some scenarios so kudos on that!

TBH, I still think Django is overkill for a static site, there are templating systems and frameworks that would be far lighter (flask + jinja ?) - especially given that you really don't need any dynamic usage at all.

Still, great work on creating and releasing a tool that makes your (and possibly others..) life easier!