simplifying

I've decided to "restart" my blog and website, moving to a new platform that is far simpler and adheres to a minimalist philosophy. Previously, I was running WordPress, which is currently the most popular blogging platform available. It works great, and frankly there wasn't anything really wrong with it. But what bugged me was the whole complexity of everything -- there were endless places where configurations could be changed, and I ended up having to spend quite a bit of time unraveling exactly what was going on to tweak things the way I wanted to. In the end, what my site was doing was rather silly -- running PHP to generate the website on the fly based on the comments and data, and then caching these pages once again to serve static files that would load faster.

Now I've moved to a system where everything is a static HTML file. I've stripped out as much of the fancy CSS, links, and design that might have looked cool, but didn't really improve my writing, my projects, or anything really. I'm using Jekyll, which is super simple. You write text documents however you want, save them, and you get a static web page in return. I'm still using Linode for hosting, since it's super simple. And since cool URIs don't change, you can still get to every one of the old pages, like my old labs page.

I'm trying to remove more and more of the crap that stands between the time when I have an idea and start working on it, and when I can show it to others and get feedback on it. I think programmers today face an extraordinary number tradeoffs when starting a new project. There are innumerable programming languages; many dozens of frameworks for anything complicate matters more. And then there are all of the meta-frameworks like version control systems, documentation systems, etc that real software should have, but isn't really necessary for ideation.

But a lot of this middleware I've realized isn't really productive when working on small projects by myself, just to learn some new language or play with some ideas. Not everything needs to have version control, particularly if it's just some kind of technology demo that was made in an afternoon and will never be maintained by anyone. Using a large framework like Django for running a web application is often overkill -- by the time you're done with all of the configuration, you are left with no energy to actually do what you set out to do in the beginning.

That's why I've been spending more time with simpler frameworks that make fewer and fewer assumptions about what you're trying to do. Wordpress assumes that you need all of these categories and tags and comments and three types of feeds and something else. Django assumes you're writing a news site that stores things based on documents and needs a complex admin to manage dozens of contributors. Instead, I like things like Flask that have a single purpose and do it well -- take requests from the web and run Python based on them. D3 is another great example -- it's a visualization framework that doesn't make many assumptions about how you want to display anything, just that you'll load some data and then manipulate it.

It's hard to leave the many features that complicated frameworks provide. But when you do, you'll find it liberating, and probably learn more while you're at it.