One of the most common questions I get about my site from people that know me is what runs it behind the scenes. This page will eventually be a log of the work I have done on the site, including rewrite and explanations of the tools I used to create and host it. I hope by providing this information I can also get some feedback or tips on other things to try.
This site is hosted out of my home. I use no-ip's dynamic DNS service to keep my domain name pointed at the IP provided by my ISP. I miss the days when I could get a static IP for $5 a month from a local ISP, and I still don't understand why this is such a hard service to provide.
A few years ago I replaced my old Linksys broadband router with an OpenBSD 3.4 box using the PF firewall package. This has since been replaced several times, and I am currently using a FreeBSD box running PF, simply because I find it easier to keep my firewall maintained when it runs the same OS as most of my other machines. The firewall NATs the relevant ports to the web server and does some queuing to keep web traffic flowing just behind my gaming traffic. I did mention that I enjoy the occasional online game of Battlefield 2 or Call of Duty 2 right?
I have another machine that sniffs all traffic going from the firewall to the internal network and while I used to analyze it with Snort, I have since given up on that hassle. These days the sniffer machine mostly does traffic analysis and network monitoring.
I host this site on a machine I put together with a mixture of scavanged and Ebay purchased parts. The main parts came from an old Gateway P3 workstation we were throwing away at work. I put the guts of this machine into a case I bought online that has eight 3 1/2 inch drive bays in removable trays. I had an old Ultra160 SCSI RAID controller sitting around, so I bought a 10 pack of 9GB SCSI drives on Ebay for $75. In hindsight I probably would have been better off buying a smaller number of larger drives, but they were very expensive at the time. Currently I am planning on rebuilding the RAID array to only include two mirrored drives for the system slices and two for the hosting areas, as the small array size I had before is no longer used for storage since cheap SATA drives are so prevalent now.
Originally I had written the site completely in PHP in Apache via mod_php with a PostgreSQL database backend. After about a year of using PHP I grew tired of the language and switched to using Perl with mod_perl and the Mason platform. The Mason/Perl combo has been an interesting platform to work in, although there are a few things that annoy me about it. The biggest gripe I have is that when I publish new code it doesn't always show up right away. In these cases I have to either restart Apache or go into the /var/run/mason/obj/<someid>/ directory and delete <filename>.obj to clear Mason's cache. Normally this isn't a big deal, but since I don't have a development hosting environment developing and testing new pages can lead to headaches.
The first version of this site was a homegrown design that truthfully looked very ugly. When I rewrote the site in Perl I searched all over the web looking for ideas, and finally decided I liked the new look of the FreeBSD site. I will admit to stealing their look, although I didn't steal any of their HTML, instead I used it as a guide in recreating the overall look and feel. The only issue I currently have with my implementation of the layout is the the page shifts when the scrollbar appears. This is caused by the method of centering used, which I knew in the beginning was going to be an issue I would have to resolve eventually. The FreeBSD site does this also, and it annoys the crap out of me, but not enough to dig in and fix it.
I primarily test the site in Firefox and Chrome. I spend little time testing for cross-browser compatibility, which means the occasional IE specific bug creeps in. Since most of my friends use Firefox anyway, this doesn't bother me much. If you do find a bug in the site please let me know and I will do my best to resolve it the next time I am bored.
I had considered rewriting the site in Ruby or Python, but I think I found something better. At work we used to use the JScript language with Classic ASP and I really grew to like it. I had been searching for a decent server side Javascript implementation and recently found one i like. The Myna JS platform uses Mozilla's Rhino Javascript engine and can be hosted in any servlet container. It gives you access to JDBC data sources and lets you access any Java objects you may wish to use. As of this writing it is still in alpha, but a beta release is due in the coming months. For being such a new project it is amazingly feature complete and I have run into very few bugs. The developers are using Natural Docs (really cool, check it out) to create the documentation and it is pretty decent for this stage in development. I have already almost completed one site using Myna and am just getting started on another one. I would highly recommend taking a look at it if you like Javascript.
Many people have asked me why I don't host my site on Windows using either Classic ASP or ASP.NET. The main reasons are that I don't want to pay for Windows, and what would be the fun in that? I wrote ASP and ASP.NET apps at work for years, how boring would it be just doing the same thing all the time?
That is all I have to share right now. In the future I will expand on some of the points I have made here, and hopefully comment on any feedback I get.