G-Chat, the Optimus Luminarium Podcast

I have started my journey into the world of podcasting by getting together with a group of friends and starting a podcast for my World of Warcraft guild. It is called G-Chat: The Optimus Luminarium Podcast. It is mainly to discuss guild-related matters and aspects of the game that are important and interesting to us.

The audience is somewhat limited, but we’re going to try to make it entertaining for people who aren’t in the guild. And if you happen to play World of Warcraft and are looking for a friends and family oriented guild and don’t like dealing with a lot of swearing and immaturity in guild chat, then check us out!

We’re on the iTunes Music Store, so if you want to subscribe, check out the iTunes direct link.

Talk on SproutCore

SproutCore

On Thursday, July 10th, 2008 at 6:30pm I will be giving a talk on SproutCore, an exciting Javascript library that facilitates creating desktop-like applications for the web. The talk is part of the monthly Oklahoma Ruby User’s Group, and will be held at the Edmond Public Library in Edmond, OK.

SproutCore is agnostic when it comes to server-side languages, so it can be used with Ruby on Rails, J2EE, PHP, .Net, or whatever you prefer as long as you can communicate with JSON. With the talk I will be giving a brief overview of the framework, what it offers as compared to other frameworks, and a short demonstration of its capabilities. It should be informative, so be sure to check it out!

Wordpress upgrades and more

So I’ve made a few upgrades to slaggle.com over the past few days. One major one is a change in backend architecture. We’re now running on nginx + fastcgi + php instead of apache2 with the php module. The site is running a lot quicker now and I’m excited about it. The ultimate goal is to migrate to mephisto running on Ruby on Rails, but I need to test out database migrations first.

I also upgraded to the latest Wordpress after feeling the sting of a spammer exploit. Someone managed to inject their own text into a frontpage post when I was on Wordpress 2.1! My mind was boggled, so now I am doing even more due-diligence to make sure the blog software stays patched.

With the migration to 2.5, I’ve switched to a pre-fabbed theme for now, which reflects the direction I’d like to start going with my sites. I’m starting to dig red for the primary color instead of the drab blues and greens.

Rails 2.1 is Out!

For the Rails guys in the audience, Ruby on Rails 2.1 was officially released at RailsConf this year. 2.1 adds a lot of features I’ve been looking forward to for a while (and using via edge rails) so I’m excited to see them in action.

Here are some of the features that I find useful:

Migrations are now versioned with a timestamp instead of a sequential number, which is a big deal for a team of developers. Your migrations have a much lower chance of stepping on each other now.

In your environment.rb file you can now list out the gems your application requires, making it easier to maintain what your app needs to run.

Supporting multiple timezones in your application is now dead simple.

To get a rundown on how to use these new features, check out Ryan Bates’ Rails 2.1 Railscasts episodes.

Podcasts - a newbie guide

Any of you who know me well or read this blog at all know that I am a fan of the social web. I’ve been accused many time of being addicted to social networks. That’s totally the truth. I will not deny it at all.

Along with that I’m really into the podcast scene. Right now I am subscribed to nearly 20 audio and video podcasts, with a wide variety of topics covered. At any given time throughout the week I have plenty to listen to and watch. In fact, it can be a little overwhelming with so much to get through each week, but I am diligent in satisfying my entertainment needs.

For those who don’t know what a podcast is, think of a serial radio show or just a normal television show. You have some sort of content (talk shows, drama, educational instruction, etc.) uploaded to a server and a special file is created that contains a list of episodes. With the help of a special program such as iTunes, you can “subscribe” to the podcast file (which is an RSS file for those who are curious) and it will automatically download the latest episodes to your computer or portable audio device.

Contrary to what you might think based on the name, you do NOT have to have an iPod or any portable device to listen to a podcast. In fact, some people such as Leo Laporte have moved away from using the term Podcast and use the term “Netcast” instead since it is content coming from the Internet and not necessarily to any particular device. Also, a vast majority of podcasts are free to download–most rely on advertising for revenue if they worry about money at all.

The easiest way to subscribe to podcasts for your own enjoyment is to fire up iTunes and go to the iTunes Music Store. Once there, click on the link for “Podcasts” and start your search. Once you subscribe to one, it will automatically start downloading the latest episode to your computer (free of charge) and you will see it there under Podcasts in your Library.

Here are a few of my favorite podcasts that you might find interesting:

Wine Library TV
This podcast is a video that updates Monday through Friday, hosted by Gary Vaynerchuk. It is all about wine. Gary is a very charismatic and knowledgeable host, and he makes the art of wine tasting very accessible to those who aren’t already wine snobs. I’ve learned a lot about wine already and look forward to each new episode. One day maybe I’ll get Gary on my own podcast!

Totally Rad Show
This is a show on the Revision 3 network, a company that does a ton of quality podcasts. Totally Rad Show is a weekly video hosted by Alex Albrecht, Jeff Cannata, and Dan Trachtenberg. They review a variety of stuff that matter to geeks, from the latest movies, television shows, video games, comic books, and more. They are very entertaining and I find myself agreeing with them as much as I want to trash their opinions. This is a staple in my rotation. I can’t skip it!

World of Warcast and The Instance are both audio podcasts that cover various aspects of World of Warcraft. They are well-produced and done by people with radio experience. You can really tell! These podcasts are entertaining if you play World of Warcraft. The hosts are really nice guys and are very accessible to their fans. I’ve played fanboy to them on several occasions and they were very patient. :)

I subscribe to a lot more that are interesting, such as Tiki Bar TV, Mahalo Daily, Ask A Ninja, This Week in Tech, and a ton more. There are podcasts out there for nearly every topic imaginable! Why don’t you check it out and see for yourself? And let me know what podcasts you like!

Oh… and be on the watch out for a podcast coming from yours truly. :)

Git-R-Done

I’ve been a long-time fan of using Subversion for source code version control, but recently I’ve been turned onto using Git, which is the version control system used by huge projects like the Linux Kernel, Ruby on Rails, Merb, Samba, VLC, and a lot more. It was designed by Linus Torvalds so it really has some geek street cred.

Why is it so cool? Git is distributed, for one thing. That means that while you may have a central location for your repository, each client clones the repository on their system. So if you lose a machine you don’t lose all your history for the project.

Being distributed like that makes it fast, because looking up history is done locally instead of over the network, so you gain a lot of performance. It has been shown to be very fast and scalable by a significant amount.

Branching, tagging, and merging are a lot easier in Git because they are treated as core concepts. Every working directory of a Git repository is in itself a branch. Handling those branches is something Git excels at and keeps track of merging the changes from different branches with ease, preserving the history of who did what a lot better than subversion does.

You can see more comparisons and contrasts between Git and Subversion on the Git Wiki.

Another (personal) reason I like Git is because of a certain tool: Github. Github is a repository host that acts almost like a social network: you can track projects you are interested in to see the latest activity as well as giving you the ability to maintain your own projects. It is a sweet little setup. If you are into development at all you might take a look.

I have decided to move my Guilder project to Github, and so far I love it. My endorsements, they are ringing!

Includes and dependencies in Javascript

For a while now I have been wrestling with a way to easily manage dependencies in Javascript.I absolutely hate having a mess of script tags in my documents, especially on a dynamic page that only uses maybe one or two of those scripts.

So when I started using jQuery, I was delighted to find that I could write an easy method to include files on the fly using Ajax and synchronous loading and execution of Javascript files. This gives us the ability to utilize lazy-loading to load scripts as they are needed and not clutter up things or waste resources if a particular Javascript is not needed.

It is easy to define a method like this (utilizing a class so as not to pollute the main Javascript namespace):

SLAGGLE = function() {};
SLAGGLE.include = function(filename) {
    $.ajaxSetup( { async: false } );
    $.getScript(filename);
    $.ajaxSetup( { async: true });
};

This uses jQuery’s getScript method to load a script, but first sets global Ajax configurations to load it synchronously so we can use it right away. So now if I want to load a script on the fly, I can do so with this:

SLAGGLE.include('/path/to/js/script.js');

You can even go a lot further and create a method to translate a package heirarchy like what Java uses into a path structure and load that instead.

I’ve been using this method for a while, but this morning I stumbled across this: using.js

using.js gives stronger dependency management to Javascript by allowing you to declare potential dependencies beforehand, and load them on the fly. The upside to doing this is that not only do you get lazy-loading, but the using.js script will only load a particular dependency only once, which cuts down on overhead quite a bit. It’s real easy to use, too. Just register your dependency like this:

using.register("jquery", "/path/to/jquery-1.2.3.js");

or even multiple dependencies:

using.register("yui-datatable",
    "/path/to/yui/script1.js",
    "/path/to/yui/script2.js"
);

Then later, when you need to make use of the dependency, you can do the following:

using("jquery");
// Use jQuery features
$("document").ready(function() {});
using("yui-datatable");
// Use YUI features, etc...

The using.js script really adds a lot of power to your Javascript coding. It has the potential to make your code much more efficient if you rely on a large number of external dependencies. Give it a try and let me know what you think!

Introducing Guilder

I’m announcing a fun part-time project I am starting called Guilder: The World of Warcraft Guild Management System. The project has just started so there isn’t any code yet, but it is a serious effort I am undertaking to both solve some problems of guild management and to learn more and more about Ruby on Rails.

Yes, the code will be Ruby on Rails. Why not Grails like I have been fond of? Well, mainly personal reasons. After spending time with both platforms, I really feel like the best fit for the web is Rails. Grails is quite derivative and doesn’t have as large a community behind it, plus personally I feel it has more elegance to it. So back to Rails I come, and find a familiar friend with open arms.

Guilder will be licensed under the MIT License, an OSI-approved open source license. Why did I choose the MIT license over something like the GNU GPL? The MIT license is very flexible and not as restrictive as some of the other open source licenses out there. I can link my code to commercial libraries, people can fork the code and sell it, and basically do whatever. I dig that type of openness.

Progress will probably be slow on this because like I said it is a part-time endeavor, but it is there and I will be working on it. If you are interested in helping, let me know.

Other ideas for web applications

I’m tossing around more ideas for web applications, just to see if there is anything I can really latch onto as a project to hone my ruby skills. One idea that came up arises from a need my World of Warcraft guild has for guild management. It would be awesome to be able to manage and maintain the following items in one application:

  • An updated roster, periodically synced from Blizzard’s Armory website
  • A forum for communication
  • A calendar for scheduling raids
  • An application with ability to manage what classes are needed for recruitment
  • Integration with WowJutsu for guild rankings
  • Integration with Wowhead for item links
  • Server status polling

That’s just a few use cases that I can think of off the top of my head, and really the list could be expanded upon to make it attractive to guilds/clans for a variety of games. Right now people have to spend money on services to provide this sort of thing for them, having an open source guild management system they can put on whatever webhost they want (as long as it supports Rails) would be awesome. I might consider this and start hacking away on it.

Twitter Updates for 2008-04-04

  • Gotta love all-morning meetings. #
  • So yeah. Meetings seem to rule my world now. I wish I could turn that statement into something more interesting, but it is a fact. #
  • Maybe instead of complaining about work on Twitter, I should make stuff up. Yarr! I just dueled a honest-to god pirate! He stole my booty. #
  • @hornbeck Grats on the new frames. Share some pics, man! #