I will make a list of things that I want from my blog system which I will not name now because reasons. So, here it is:
- Native or bytecode, no interpreted language. The reason why many choose interpreted language is that they or the ones writing their software find it easier to modify the code. However, how many times do you really need to modify it? Because having it interpreted with every page view costs more than the time you need to compile and deploy the compiled code. And that cost comes with every page view. So that discards PHP and Ruby, so no wordpress, no octopress for me.
- For starters, an exclusively offline management tool – I want to work on my laptop, or on my desktop, and only use the server as a data storage (including drafts & stuff). I don’t want to have a web interface to control everything, at least not now. The problem is that I want to be able to write and publish from a low bandwidth location. And the only way to do this as efficient as possible is to not offer a web interface for it, simple as that.
- An easy to backup blog. Just copy/mirror the files. A folder for configuration, one for the themes, one for the content and that’s that.
- Dynamically generated content – so you can actually have stats on the server side (other than the server logs) and a proper commenting system – this is where the static approach of octopress is not to my tastes.
- In memory cache for articles and theme. The text of a blog is usually no more than a few megabytes – and I want them ‘hot’, as hot as they can be. Under stress I can discard or redirect access to pictures, but I want super-fast delivery of the text area of my blog.
- I also want to be able to easily switch to an external storage (say, cloud) for pictures, audio and video.
- I want no nonsense JS running on my page. A blog doesn’t need to be active – other than stats (like Google Analytics) the page should be static, as static as it can get. That will be harder to enforce if I open the system up, but that’s my vision.
- I’ll probably open the source up from day one.
These are generic objectives. The technical details can be seen through them, but I don’t like to make specific technical decisions from day one, when I don’t even know what I need. One thing, though: I wonder if it will be C# or C++. There are reasons to choose either, if really necessary I could choose both.