Dropbox is the new Publish Button

I had written earlier about what my ideal blogging setup would look like. I am glad that I have been able to find something close enough that works for me. I looked around for a while hoping that surely someone must have created something close enough to what I need. My initial search of existing blogging platforms, big and small, ended up being fruitless. I had started working on something from scratch in Python. However, I knew being a noob programmer that I was, it would not only take months but that it would more than likely be full of gaping security holes. This is when I looked into Pelican for the second time, in light of using Dropbox as a way to publish my posts. I did not want to use FTP or push my posts via Github. Joe Hewitt has a brilliant post on using Dropbox as a method to push your posts to a server, in case you are interested.

Behind the Scenes

I write my posts in iA Writer. Each post begins it's life as a .txt file that I continue to iterate or write in multiple sittings. Once done, I simply change the file extension to the Markdown extension .md since it (and .rst) are the only file formats, Pelican handles by default. This avoids having to use a Status tag and setting it to Draft for every unpublished post because Pelican does not consider any .txt files for a potential new post.

All this while every version of the file is continously saved in a Dropbox shared folder. This shared folder is shared between my main Dropbox account and a sepearate account that is installed on my Ubuntu server. The Dropbox CLI for Linux is the key to get this done. Using a seperate account and a shared folder balances ease of use and safety of the rest of your files in your main Dropbox account. Just keep in mind Dropbox does not like being installed as root and throws all kinds of errors. Just create a new user and install Dropbox as this user while setting up. Also I am using Amazon S3 for all static resources within posts to which I can upload even using my iPhone.

How do these Markdown files get converted into static HTML pages for the blog? That is where the magic of Pelican comes in. It smoothly creates an output folder with all your posts and other blog pages as HTML every time you ask it explicitly. It also generates the tags, archives and RSS feeds of your static blog. This setup makes the site not only faster but also avoids any database complications or security issues that you might run into otherwise. Best of all, if anything unwanted ever happens, I can simply install Pelican and use my local Markdown files to create my blog all over again in less than 5 minutes.

Another missing piece of puzzle is how to watch the Dropbox folder on the server for any file changes that will then ask Pelican to generate new files for the new blog post. The answer is Incron, which watches Dropbox folder for any changes and executes a script that asks Pelican to do the needful. If you are looking for something more step by step, this post by Matt Ronge should be your go to guide.

The Design

The biggest reason for starting off with a new blog was to make blogging as frictionless for me as possible. If I want to write about something, the only step involved should be actually writing it. My original blog was designed for individually styled posts and more importantly as a protfolio. It was designed to sell myself and did it's job well. Fortunately I do not need that anymore, hence the need for a change. I could have chosen to redesign the old site but the thought of providing backward compatibility to older posts meant features I was not looking for in the new system. I am still not sure of what I will be doing of the previous site. Maybe I will make it a simple one page portfolio once I am done transferring all the blog posts in the new system and once I have found/written a good way to export my Tumblr.

With this blog, I am keeping things simple and minimal. The design has a flavor of my favorite colors of the season but is otherwise minimalist. I really like the idea of a cover/banner that I can change over time depending on my mood/season/occasion as seen in the Facebook timeline, Path and other new services. Other than that the site is as minimal as I could go for without being bland. The idea is to give written and visual content the room to shine. The typeface used is Skolar and is served via Typekit. All posts have a Tweet and a Read later button that enable you to appreciate the content if you liked it or save it for later reading if you are running short on time. Needless To say, but the site is responsive to the screen size you are viewing it on.

The nature of posts will be, as the name suggests highly opinionated and polar. It will cover design, startups and tech but everything will be as seen from my eyes. There will be long form articles interdigitated with shorter articles reflecting on important events/articles/news from the aforementioned spheres. I hope to write more frequently, so expect to see 3-4 posts every week in general.

For now, it is time to hit the save (publish) button.