• I'm Now on GitHub!

    So I finally broke down and made myself a GitHub account this morning. I’ve been using Git for a few personal projects I’m working on and now that at least one of them is getting to the point where its worth sharing with others, I figured its time to get ready :) Unfortunately my pretty standard monicker, sbook, was already taken, so I’ve gone another route (skyebook)

    Follow me on GitHub!

    I think Git’s the future as far as DVCS (Distributed Revision Control) and have been seeing GitHub used to great effect as of late.

    I’m also on Google Code, SourceForge, and Ohloh in case you were curious:

    http://code.google.com/u/skye.book/

    https://sourceforge.net/users/skyebook

    https://www.ohloh.net/accounts/sbook

  • Setting up a Simple Load Balancer in RHEL/Fedora

    After spending roughly 36 hours trying to get the combination of heartbeat and ldirectord to cooperate, I threw in the towel and went in search of something simpler so I could test my code without becoming a full-time Linux Administrator.  Introducing Balance, an easy to use load-balancer that won’t make you crazy.  Before we get started, just a quick note to you Ubuntu users out there:  The balance package available from the repositories as of the time of this writing is out of date and has a bug that seems to cause non-IPv6 addresses to fail (bummer).

    Now then, if you’re on Red Hat, you will want to use the EPEL repositories from Fedora (setup instructions here)

    su root
    yum install balance
    exit
    # Bind port 80 on the localhost to port 80 on servers 1 and 2
    # The -f option will keep the process in the foreground
    balance -f 80 server1.example.com server2.example.com

    Was that simple or was that simple? For more specific options, the man page for the software is very informative and explains, with examples, how to perform most tasks.

  • Installing htop in RHEL 6

    I’m still learning my way through Red Hat Enterprise Linux, and today went looking for htop. Unfortunately, its not quite as easy as installing through yum from the default repositories, so we must dig a bit deeper. By adding the Extra Packages for Enterprise Linux (EPEL), provided by the Fedora Project, to the repository list, we can then install htop, as well as a number of other great packages.

    # as root
    rpm -Uvh http://download.fedora.redhat.com/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm
    yum install htop

    Bang. Easy.

  • Setting Up a Betaville Server on RHEL 6

    Here’s a little treat for you enterprise users, a quick guide to setting up a Betaville server on Red Hat Enterprise Linux! To get all the latest greatness, we’ll be getting the application directly from the subversion repository and setting it up ourselves.

    yum install subversion
    yum install java-1.6.0-sun.x86_64
    yum install ant
    mkdir betaville
    cd betaville
    svn co http://betaville.googlecode.com/svn/BetavilleApp/trunk BetavilleApp
    svn co http://betaville.googlecode.com/svn/BetavilleServer/trunk BetavilleServer
    cd BetavilleServer/util
    ./compile.sh

    This will build the actual software, next is the process of setting up the software to do something! A script is provide to aid you with initializing a server, and can be run like so:

    ./initialize_server.sh

    And we’re off to the races!

  • The COLLADA Library Behind OS X's Preview and Quick Look

    While working on my latest concoction of rendering landmasses in OpenGL (and writing the results to a COLLADA file), I noticed a series of interesting messages passing by in my MacBook Pro’s console

    So let’s see, we have “Unable to find instantiated entity” as well as “Mesh has source with an unknown id.“. Well these are terms that look familiar, but from where? A bit of work in Google tells us that we’re looking at errors generated by FUError.cpp, which is a part of the open-source FCollada library.

    // from lines 103 and 144 of the aforementioned FUError.cpp case ERROR_UNKNOWN_MESH_ID: return “Mesh has source with an unknown id.”; case WARNING_INST_ENTITY_MISSING: return “Unable to find instantiated entity.”;

    So that’s that. Kudos to Apple for not reinventing the wheel, I’m glad to see that they chose to use what was already out there.