home

This Blog Is Now Hosted On Github

11 Oct 2011

Over a year ago, I wrote my own crappy Rails blogging engine and started to use it to power my blog. Today, I moved everything to github. I think it’ll just be easier to write new posts and it’ll make my content more accessible. It also better reflects my general attitude about blogs: less is more.

Github users can create a new repository called YOUR-GITHUB-NAME.github.com and that’ll be accessible at http://YOUR-GITHUB-NAME.github.com. For example, my repository is sitting at http://github.com/karlseguin/karlseguin.github.com and it’s accessible at http://karlseguin.github.com/. By placing a CNAME file in my root with the contents of openmymind.net and pointing my domain to 207.97.227.245, things just work.

Your personal page, like a project page, is a special github project though. Every time you commit, github runs your project through jekyll. Jekyll is a blog-aware site generator which supports templating and a few other nice features. With disqus handling comments, anything else is just, well, silly.

Extracting my existing content from mysql was pretty easy:

conn = Mysql.real_connect("localhost", "user", "pass", "db")
res = conn.query("select slug, title, summary, body, created_at, id from posts")
while row = res.fetch_row do
	file = Date.parse(row[4]).strftime("%Y-%-m-%-d") + '-' + row[0] + ".html"
	File.open(file, 'w') do |f|
		f.write("---\n")
		f.write("layout: post\n")
		f.write("title: \"" + row[1] + "\"\n")
		f.write("disqus_id: " + row[5] + "\n")
		f.write("---\n")
		f.write(row[3])
	end
end
res.free
conn.close

Now, almost all of my links are still valid (/about turned to /about.html), and publishing a new post involves commit the file and pushing it to github.

blog comments powered by Disqus