Revving up our website build system Dec 6

We deployed our new website build system which uses and a few days ago. And we are very happy with the performance improvements.

It now takes under 5 seconds to build and publish a website with ~50 resources (

Under 5 seconds our build system

  1. Downloads these 50 resources from dropbox
  2. Minifies all your HTML, Javascript and CSS
  3. Gzips all your text content with the highest compression, so that it can be served fast without on the fly compression.

For subsequent builds it only builds the resources which change which should be much faster.

Now, the changes are published within the time you save your changes and refresh your browser.

Enjoy the speed improvements :)


I couldn’t help myself from sharing this :) I use middleman for this blog, And when I pushed this post it ended up updating 3 resources in 456.688009ms. That is really fast :)

New blog post helper script for middleman blogs Sep 26

This blog is built using the awesome middlemanapp. However, to create a new blog post you need to create a file with a name similar to 2014-09-26-new-blog-post-helper-script-for-middleman-blogs.markdown, it also needs to have it’s title, date and tags in the YAML frontmatter. So, I just wrote a quick script which helps me create new blog posts easily. It also creates a neat symlink in your root directory with a name current.markdown so that you can open this file easily, without tabbing a hundred times :)

#!/usr/bin/env ruby
#Contents of ./new
# ./new 'New blog post helper script for middleman blogs' \
#           'tiny, utility, middleman'
#Edit your post by running vi current.markdown
#Author Khaja Minhajuddin
require 'fileutils'

title = ARGV[0]
categories = ARGV[1] || ''
date ="%Y-%m-%d")
content ='TITLE', title).gsub('DATE', date)
              .gsub('CATEGORIES', categories)
filename = title.downcase.gsub(/[^a-z0-9]/, '-').gsub(/\-+/, '-')

CURRENT_SYMLINK = './current.markdown'

filepath = "./source/#{date}-#{filename}.markdown"
puts "writing #{filepath}"
File.write(filepath, content)
FileUtils.ln_s(filepath, CURRENT_SYMLINK)
puts "symlinked new article with #{CURRENT_SYMLINK}"

title: TITLE
date: DATE

The code is kind of self explanatory, so I won’t go into the details explaining it.

Our product development strategy Sep 25

At websrvr, we have two goals:

  1. To create a product which makes the process of website development simple for web developers and web designers.
  2. To make these new websites blazingly fast.

And, to that end we have two teams working on websrvr. One which is focussed on improving the performance bit by tiny bit and another to make the whole experience enjoyable and simple.

If you have a pet feature you want us to work on, just let us know by emailing us at: and we’ll get right on it.

Below are a few features which we’ll be launching soon:

  1. Ability to use contact forms with your websites seamlessly.
  2. Add pre processors for less, coffeescript, sass, scss and markdown.
  3. Image optimizations for your websites.
  4. Javascript and Stylesheet concatenation support.

Stay tuned!

Showcase for websrvr websites Sep 23

I built a quick showcase for websites hosted on websrvr using middleman. You can check it out at

If you have built a website and want it to be listed on the showcase, just send me an email at

Websrvr now minifies and gzips your css, javascript and html Sep 23

I have deployed a new update to websrvr today which minifies and gzips css, javascript and html files in our websites. You don’t have to do anything to start using this feature. Just relax and enjoy the performance improvements :) I did a simple test on’s home page (by the way is also hosted on websrvr, How cool is that :) ) and the size of the page had reduced from 8799 to 2649 bytes which is a decrease in size by 70%.

However, for some reason if you want to turn of css or javascript or html minification, you can go to your site’s edit page and uncheck the Minify HTML or Minify Javascript or Minify CSS options, once you do that your html/js/css won’t be minified.

Hello world Sep 11

It has been an awesome experience building

I strongly believe in dogfooding so I created this blog using jekyll and, it was actually very easy to setup. All I did was:

  1. Create a directory called websrvrblog by running jekyll new websrvrblog in my code directory. This can be named anything.
  2. Edit the _config.yml to add a destination: /home/minhajuddin/Dropbox/Apps/websrvr/blog

That’s it, now whenever I run jekyll build it exports this blog to the blog subdirectory in my dropbox folder which is hooked up via websrvr to show up at


Since writing this blog post I have found middleman and I am in love with it :) this blog now uses middleman, you can find the source of this blog at