Jamie Murai is a student, developer, and sometimes blogger.

Hello iPhone!

When the iPhone was first revealed in January 2007, I was pretty sure that the mobile phone industry was about to be turned on its head. Sure, all the established players said that a new entrant wouldn’t be able to make any significant headway into an market that was already pretty saturated. Fast forward 2 and half years later, and the iPhone is arguably the most coveted phone in history, and I’m happy to say that I’m finally the proud owner of a “Jesus Phone”. On Friday June 19th, I was the first one in line at the Rogers store in Waterloo to buy a new iPhone 3GS. Needless to say, I couldn’t be happier. I’ll write up some more thoughts about the phone once I’ve had more time to play with it.

Smart Choice

Wearable Tech From MIT

7 Useful Wordpress Plugins

I just got finished installing a couple new WP plugins, so I thought I would write up a little list of the plugins that I use on my blog. My site is fairly simple, so most of the plugins I use do their work in the background, but are very useful nonetheless.

There you have it, the 7 plugins that help me manage this site more effectively.

Forever’s Not So Long

A really great short film by Garrett Murray and Shawn Morrison. Head over to Vimeo to watch it in HD.

Ruby Deployment Made Easy

Adam Wiggins, co-founder of Heroku, posted about the latest version of their Ruby hosting service.

The new Heroku is instant Ruby deployment with a pure Git workflow. In my estimation, there is no faster or easier way to get a Ruby web app online. We’re finally making good on our tagline: “Never think about servers or hosting again.”

Having never used Heroku, his post gave me enough incentive to try it out. I can now say that Adam speaks the truth about how easy it is to deploy onto Heroku. If you have a pre-existing Ruby app that’s already under version control in a Git repository, in the most basic case it takes literally three commands to deploy the app and have it up and running. Check out the quick start guide for details. If you are new to Ruby web app deployment, or looking for an easier solution for small apps, definitely take a look at Heroku.

*Note: I said Ruby, and not Rails, because Heroku can handle many other Ruby frameworks as well, such as Merb and Sinatra.

A Few Computer Science Related Blogs

Just thought I would post some links to a few blogs that I think have some really good CS related information on them.

While Hacker News isn’t strictly a blog, it has an unusually high density of useful technology related information compared to Digg, Reddit, etc.

Automated Deployment with Fabric

You may not know this about me, but I have a slight obsession with software automation tools. I’ve used make, Ant, and Rake for automating my builds and tests. I’ve used Capistrano for deploying Rails apps. I even wrote a bash script (with the help of a good friend) to automate the testing of my school programming assignments. With that in mind, I wanted to post a few thoughts on my newest automation find. It’s called Fabric, and it’s an automated deployment tool written in Python.

Fabric is similar to Capistrano, but I find it to be a little more lightweight and much easier to get up and running quickly. I tried to install it on my Macbook Pro using the Python ‘easy_install’ tool, but I think there was some type of dependancy problem, so I ended up installing it through MacPorts. Once it’s installed, all you need to do is create a file called ‘fabfile’ in the root of your project directory, and add the necessary tasks. In Fabric, each task is just a plain old Python function. Let’s say you build your application into a ‘dist’ directory. Here’s an example of a simple fabfile that will archive the dist directory, copy it to the production server, and extract it.

1
2
3
4
5
6
7
8
9
def production():
  config.fab_hosts = ['myserver.com']
 
def deploy():
  'Deploys the project to the remote hosts'
  require('fab_hosts', provided_by = [production])
  local("tar cvf project.tar dist')
  put("/remote/path/to/project.tar", "project.tar")
  run("tar xvf project.tar")

As you can probably guess, local() will run a command on your local machine, put() will copy a file over to your remote machine, and run() will run a command on your remote machine. There is also a sudo() function, which will run a command under sudo privileges on your remote machine. The production() function just tells Fabric which servers to run the deploy commands on. The config.fab_hosts variable is an array, so feel free to add as many hosts as you like. If you wish to setup multiple environments, then just add a different function for each (i.e. test(), staging(), production() ), and then add the extra environments to the ‘provided_by’ variable on line 6. Finally, deploy your project with the following command:

$ fab deploy

So as you can see, it’s very easy to get started with Fabric. I haven’t had a ton of experience with Capistrano, but I can tell you that it took me quite a bit longer to get a handle on Capistrano than it did with Fabric, but YMMV. I just think it’s a cool little tool that would be really useful for a wide variety of deployment situations.

Her Morning Elegance

by Oren Lavie

Protect Wordpress Admin With SSL

If you ever login to your Wordpress admin section while on a public network, you probably want to encrypt your login information with SSL so that unscrupulous people don’t start posting naked pictures of themselves on your blog. Ok, so that might be a stretch, but I still think it’s a good idea to protect your login information. [Read more →]

← Older