Something I have been toying with lately is spinning up my development environment as needed in the cloud. For this I have been using AWS.

Why am I doing this?

  1. I would really like to use Linux as my home computing environment, but it just doesn’t cut it. Fortunatley SSHing into a Linux box is basically the same as a local terminal.

  2. I don’t have to worry about messing up the environment. Since I know that I will destroy the environment when I’m done for the day, I take extra care to script everything to make sure it is repeatable. No problem if I make a mistake, I can always rebuild it at any time.

  3. Low cost. I used to have a permanent environment running all of the time with private hosting. It turns out I didn’t use it that much and I don’t need it to be available all of the time, because I only use it for development.

The process isn’t perfect yet. For example, here is how I setup Jekyll when I want to update this blog.

  1. Sign in to AWS EC2 and setup a t2.nano instance. (I wish I knew how to script this into a push button step)

  2. SSH in and run my setup script

sudo yum install ruby-devel rubygems-devel gcc emacs make autoconf zlib-devel patch git
sudo gem install jekyll jekyll-paginate
ssh-keygen -t rsa -b 4096 -C "[email protected]"
# copy this to https://github.com/settings/keys
less /home/ec2-user/.ssh/id_rsa.pub
git clone [email protected]:mrcarlosrendon/mrcarlosrendon.github.io.git jekyll
git config --global user.name "Carlos Rendon"
git config --global user.email "[email protected]"
cd jekyll
git fetch
git checkout jekyll
# build if desired
jekyll build
  1. Move the published files to the publish branch.

  2. Push to GitHub Pages to publish.

What I don’t like about the setup… It takes a while to spin it up.

What I do like… while I wait I can blog (like write this post).