Skip to main content

How A-Trak Increases Developer Productivity on Windows Azure

I've recently been working on non-.NET technologies on Windows Azure platform and I'm finding it amazingly fun and easy. From NodeJS to PHP, I'm finding it easier and easier as time goes on that the tooling Microsoft is releasing makes developers lives easier.

That said, at Agile Business Cloud, we're also in alignment with Microsoft's shared vision of making developers' lives easier on Windows Azure. I'd like to announce A-Trak, A Windows Azure Blob Synchronizer and Windows Azure Asset Pipeline (WAZAP).

A-Trak allows developers to easily push files from your machine into Microsoft's public Cloud within 1 easy step (command-line invocation). Additionally, it allows you do synchronization between more blob storage accounts in the following use cases:

Blob → Blob
Blob → Folder
Folder → Blob
Folder → Folder


When quickly spinning up a Wordpress hosted service on Azure, we didn't want to deal with the insanity of a bug when redeploying packages to Azure -- It's in line with this issue. We wanted to extract all resources on our Wordpress theme and pull them in from Windows Azure Blob Storage. Incidentally, our older workflow relied on changes to code in our source tree, then repackaging the PHP WebRole, then shipping it off to Azure.

This triggers a serious issue in Wordpress where you lose auto_increment on all posts in wp_posts table. As a consequence, your administrators lose all abilities to add or update posts/pages; however, you are able to "Quick Publish" a page through the Wordpress Dashboard user interface.

This needed to change.

As front-end engineer, you end up building up your "assets" directory, which contains JS/CSS/images as the front-end begins to evolve into something that a user can easily interact with. A packaging process where you do upgrades or VIP swap after a staging deploy seemed way too disconnected in terms of programming paradigms. Instead, we've taken an approach where a Front-End Engineer can have a command prompt and invoke A-Trak to push their "assets" directory straight to the cloud.

In the end, we have a very simple setup: Wordpress on Azure (no customizations), our own RESAAS theme to avoid any theme-clobbering (overwrites), content changes from administrators, and the presentation layer (CSS/JavaScript/Images) being hosted on Windows Azure Blob Storage.

Thanks Jef King!

Good luck and have fun,
Jaime Bueza

Jaime Bueza is a software engineer in Vancouver, British Columbia, Canada. He has developed web applications for Nintendo, Starbucks, Bacardi, Nike, Electronic Arts, Ritchie Brothers, Kiwi Collections, Cox Communications and Microsoft. When he's not developing useful software that constantly evolves with business requirements, he's writing open source software and helping developers in the Windows Azure NodeJS community.


Popular posts from this blog

TextMate Tutorial: How to add a Strikethrough keybind to your Markdown bundle

Markdown is awesome for quickly generating Readme's on Github. After looking at other projects using the strike tag, I've decided to create a custom keybind for it in my TextMate Markdown bundle. Here's how:

1) Click the + sign on the bottom left and click New Command.
2) Paste this into the editbox and make sure you name your command "Strikethrough".

For the input field, select WORD in the drop down.
For the output field, select "insert as snippet".
As for the keybind, you can totally map it to whatever you're comfortable with but I chose Command-D as it is the same thing in Microsoft Word.


World of Warcraft Ninjalist addon: version 0.1 coming along quite nicely

After toying around with more GUI related issues in World of Warcraft's API, I've decided to take a totally different direction. Originally when I architected this addon, I knew in my mind it would be a super simple Console application that a user could easily paste in a name and add it to the database; however, why stop there?

After discovering AceGUI, I can easily start developing UI components in no time! As of right now, I've got it saving data in between game sessions--the interesting part will come when I'll have to develop the web service that will parse the SavedVariable.lua, eliminate duplicate entries, as well as, do a huge merge between their copy and whats on the server's (per realm basis of course).

Here's a screen shot of the responses when adding new Ninjas to your list:
When a user clicks add after entering a name in the textbox, it'll go ahead and add that person to the ninjalist tagging the user's realm and current date/time. Someday, I…

Using Git Hooks: Prepare Commit Message to automatically prepend branch names on commit messages

When you're practicing branch by feature with distributed version control, typically you'll get assigned a ticket or issue and that ends up being your feature branch. Instead of always typing in the branch name in every commit, you can edit your Git hooks (specifically prepare-commit-msg).

Assuming that this is a brand new git repository:

mv .git/hooks/prepare-commit-msg.sample .git/hooks/prepare-commit-msg
vi .git/hooks/prepare-commit-msg

Edit the file by commenting out what was originally in the file and then add this:

Now, whenever you make a commit, it should show up like this in the log:

Since GitHub and Bitbucket both support Emojis inside commit messages, you can do something cute like this

Want more emojis? check out the Emoji Mardown Cheatsheet!