I've had a blog on my vanity domain for nearly a decade now. For the last 6 years, it has been powered by Django Techblog, which I wrote out of my frustration with syntax highlighting plugins in Wordpress. Techblog has happily served my blog those 6 years, with only minor hiccups when I half-heartedly ported the code to the latest Django.
There was nothing terribly wrong with Django Techblog; it had multiple blogs, tags, search etc., but there were some annoyances that I didn't have the motivation to do much about. The custom markup system I used was clever, but I would often forget the syntax! The support for images was rudimentary and the single-threaded comment system wouldn't notify me of replies.
So fast forward 6 years and the time is right to build a new blog system to fix the old niggles. This time around I had same requirements for syntax highlighting in both posts and comments, with a new requirement to be able to manage and display photographs, while supporting the same multi-blog and feed URLs.
Moya Tech Blog
The syntax highlighting supports a number of languages. Here's an example (my new favorite sort algorithm):
from time import sleep from threading import Timer def sleepsort(values): sleepsort.result =  def add1(x): sleepsort.result.append(x) mx = values for v in values: if mx < v: mx = v Timer(v, add1, [v]).start() sleep(mx+1) return sleepsort.result
The editor in the old Techblog was undeniably clunky; just a big text-area. It did support drafts, and previews in a new window, but it wasn't at all elegant.
Moya Techblog's editor is friendlier. Drafts are auto-saved as you type, including any images you add, and there is an automatically updating preview that renders the markdown.
The original Techblog did nothing more than provide a basic UI for uploading images. The new, friendlier, interface manages uploads and does some some fairly sophisticated image processing so that photos are displayed in a resolution that fits the display. If you upload large enough photos, it will display them in pin-sharp 4K resolution on high dpi and retina displays. I don't think that even 500px supports that.
A feature that I think photographers will appreciate is that Moya Techblog will extract camera and lens information from the exif data (here's an example). I've always found this information invaluable, especially when I was learning photography.
Installing Moya Techblog
Moya Techblog is super easy to install. First install the following with pip (requests_oauthlib is for the 'Sign-In with...' buttons):
pip install moya requests_oauthlib
Next run the following to get the code and set up the database:
git clone https://github.com/moyaproject/moya-techblog cd moya-techblog/site moya init
From the same directory, enter the following to run the development server:
The development server uses sqlite and stores media in the project directory, which is convenient for testing/development. See the docs on deployment if you want to permanently host Moya Techblog.