|
I've already introduced Vying Games on the About page. So, what I'd like to do here is give an introduction of sorts to the technology behind the scenes.
The Short Version
In brief, at this time, Vying Games uses a little of all of the following: Ruby, C, Ruby on Rails, JavaScript, AJAX, JSON, HTML, CSS, the canvas tag (and ExplorerCanvas for you Internet Explorer users), Postgresql, and (it seems likely) more.
The Long Version
This website is actually composed of two projects. The first of which I started several years ago and have simply been calling Vying. It's a Ruby library that implements the rules for a handful of games (despite the fact that there are only Connect6 and Othello on the site currently, I've implemented the rules to 10 games in the base library). This project also includes the AI library that the bots on this site are built from.
The Vying project incorporates a small amount of C in performance critical areas. For example, determining which discs to flip in Othello was written C. Overall, though, for how much talk there is about Ruby being slow, very little of the library is C. In fact, in some places I wrote C and Ruby versions of a method, only to delete the C code because it was only marginally faster.
The other project is the Ruby on Rails based website that's serving up these web pages that you're reading now. This is the less mature of the two projects, and will continue to need work.
The website, interestingly enough, doesn't use any images, at this time. The game boards are rendered on canvas tags, and use only primitive shapes like circles, squares, and lines.
So Long, and Thanks for all the Fish
Every once in a while, as I'm programming, I'll hit a milestone. I may not have written much code on that particular day, but at that point in time the software I've written is, in some sense, done. Oh, in the real world, software is never really done. But on certain days, in some ephemeral way, I'm done with my work. On those occasions, I like to lean back in my chair, put my hands behind my head and just soak it in. Or, like when I finished Othello, play a couple hundred games.
In any case, I've had a couple of those days recently with Vying Games. My todo list is a mile long, of course, but I do feel like I've hit an important milestone. So I'm a little reflective right now, and I can't help but think about that long list of languages, frameworks and libraries. How immense a thing is all the work that went into those projects. Or the web browsers, on which Vying Games runs. Or the software development tools that I use day in and day out without ever really thinking about (it's amazing how the best tools just disappear, destined to be taken for granted).
And what about the people behind these projects. How much blood, sweat, and tears have been spilled to get us to where we are today? It's a little awesome to think about all those people, leaning back in their chairs, hands behind their heads, enjoying their own milestones.
Thanks to those people, without whom, we'd all be much poorer.
|