Introducing Me (Caleb)

I'm an electrical engineer by trade, though most of my time is spent doing custom software development for a small R&D company in south central Indiana. My work mostly revolves around the diesel engine industry, but I'm also very active in the open source community which is where I get a lot of my programming tools from.

My main interests are in the GUI world, particularly around Agile methods and Rapid Development. I am a huge fan of Ruby and preach its use where I can. I'm also involved with the KDE project, Gentoo Linux, and Ruby on Rails.

Most of my professional work centers around Linux, though I also do plenty with Mac OSX. The only time I use Windows is to work with Office documents people might send me, and to play a little online poker.

Interestingly enough, I went to college with CodeSnipers' very own Keith Casey. I hope he doesn't hold it against me.

Hey, I'm an Analyst!

Up until a few weeks ago, I thought the title "_____ Analyst" (fill in the blank) was an ambiguous term that meant you had a fancy title. What's an analyst do!?! Nobody knows for sure, I thought. I didn't call myself an analyst. I scoffed at anybody who did, and said, Oh yeah. You're special. What's that really mean? What is it you analyze anyways??

Then just a few days ago, I had the thought, "man, I am getting sick of analyzing stuff!" and then I realized, hey I'm an analyst!

Agile Web Development with Rails

Many people (like me) want to start using Rails, but are a little intimidated by picking up a new language and framework. We don’t want to spend countless hours reading through online documentation and puzzling out how things work. We just want to get stuff done. Agile Web Development with Rails is written with this group in mind and it certainly delivers.

The book is targeted at people who are familiar with coding and object oriented design. While prior knowledge of Ruby is certainly helpful, the book works well for those who are new to the language as well as the framework of Rails (like me). For Ruby newcomers there is an appendix that covers some of the basics of the language. Let’s get on to the meat of the book.

Guide to Hiring Developers

Editor's Note: This is the second posting in our series of items from guest contributors. Since all of our current CodeSnipers and community have looked for a job, I thought this perspective would be helpful. If you are interested in contributing to CodeSnipers, please check out the previous posting.

This is the first of a three-article series that touch upon the subject of hiring developers. These articles reflect the procedure that I had established when I was working as R & D Manager in LogicDIS, having interviews for new hires as part of my job. Of course I'll be following the same procedures in my newly formed company, called think.BIG.

got something done

A meeting in a stuffy conference room, over lunch, no less. Issues were raised, some fingers were pointed, solutions were discussed. Nothing too unusual really, until the end, when the host cleared his throat and inquired: Alright, so what's the next action?

This, right then and there made my day.

I love Unit Testing

Alright, so I admit that I'm completely biased. I can't be impartial about it and I don't think you should be either. Once you begin writing Unit Tests - or better yet Test Driven Development - you don't want to go back. Once you have a series of Unit Tests for a particular class, method, etc, it's painful and scary to modify code lacking these tests...

But I also see the value in Unit Testing in a few other areas.

Off By 1 + Off By 1 = Off By 2

A while back, I was working on a particular project where the load was a magnitude higher than what we expected. It seemed to always be running and only rarely catch up with the backlog. The load on the system shot from nothing to 99% for long durations.

We hoped something was wrong, but the data was coming into the system just as expected. What was our problem? It was an Off By Two Error. Yes, normally they're called "Off By One Errors," but there's a bit more to it than that...

Attribute Accessors - Ruby VS. PHP

Typically in objects you don't set/get the attributes directly, you use a method. This allows you to do type checking when setting the data or to format it a certain way when getting the data. In php I would use something like this:

    function setAttack( $atk ) { $this->attack = $atk; }
    function getAttack() { return $this->attack; }

And used like this:

echo $testcard->getAttack();

UTF-8 Versus Windows UNICODE

The term "Windows UNICODE" refers to the UCS-2 (and later UTF-16) encoding chosen by Microsoft for their standard Unicode encoding. For years, one of the recurrent thoughts in my head has been "what if Microsoft went with UTF-8 instead of UCS-2 as their Unicode encoding?" Many times I feel I would have preferred UTF-8, but it is by no means a simple issue. People often point to speed as the defining issue but even speed is not a slam dunk. Here are some points for comparison between UTF-8 and UTF-16.


Paid Time Off (PTO) is the answer to employee time administrators' dreams - one bank of hours accrued at a set rate for each employee to use for any reason they need to be out of the office.

The alternative, which is still quite common at many companies, is to track leave for each employee in separate accounts. One bank of vacation hours, one of sick leave, and one of personal leave - all accrued at different rates and with different rules for when an employee can use them.

Even with the simpler PTO account, the one excuse fits all, companies still manage to introduce arcane rules governing how an employee can use those hours. Few things shine a light into a company's bureaucracy brighter than examining their employee time off program; or better yet, living inside of it.