Making Odyssey

Why have just one semi-neglected blog platform?

Reading time: about 12 minutes (2300 words).

Realistically more time is sunk into the design of this blog than content for it, and so in similar fashion it's my honour to introduce you to my photoblog Odyssey—a completely over-engineered marvel that has the capacity to, but probably wont be updated any more regularly than this blog you're currently reading.

I've seen a lot of ways people choose to display photos in a gallery, and there's usually some form of trade-off every time. Either you must conform to some thumbnail size and aspect ratio (example), or you just hope that no-one ever scrolls to the bottom of the page to see a miss-aligned ragged edge (example), or even no chance of previewing the images: just keep clicking and hope that it's worth it (example).

The general issue here can be considered as a partition problem, which in less mathsy language asks the question: How can we arrange a group of objects of various size into a container without overlapping or overflowing? The answer to this question is one which falls into the NP-Complete category of annoying things most people don't want to deal with.

Automatic Publication Lists for Zola

New name, new tricks, new templates. Same old list.

Reading time: about 7 minutes (1237 words).

It's been a while since I last ranted about publication lists, so let's go ahead and see if we can't re-solve this non-issue in a different context. The papers section of this blog has always been manually updated. Back in the Hakyll days there was an attempt to rectify this, but it caused no end of frustration. Gutenberg's system didn't really allow for an automated process either, so the whole idea had been shelved indefinitely.

Accessing partially recursive data structures in Elm

A comment on commenting systems, implementation discussion for your discussions on implementations.

Reading time: about 12 minutes (2295 words).

So you've read over the Recursive Type Aliases hints in the Elm compiler documentation and that all seems straightforward. Mainly because it is, but unfortunately simple examples like this are seldom actually useful when you need to actually do something.

In my last post, I talked about generating a nested structure of comments and any replies pulled from a database at the backend of oration, so that this data could be exposed via an API in JSON format. Now, I'd like to continue the conversation at the frontend—hopefully answering the question: how do we invoke a recursive type and do some work with one?