Winter Wonderland Games and College Decisions


Well, it's been a long week already and it's only Tuesday. The new students at school have been here for over a week now and I think they're getting used to things and opening up faster than any other group we've had. The only exception to this is Jessy. For some reason she's staying extremely quiet. Either she's put off by the whole thing and thinks she's made a mistake, or she just hasn't opened up yet. Either way, time will tell.

It's getting cold outside as we move into the Winter months and from the way things are going, it looks like it's going to be a harsh one. Oh well, I guess you can't have everything. I also found out today that Max will not be coming to visit for Christmas this year because he has no money. Bummer. He's disappointed too and I can understand why.

On a lighter note, I got Grand Theft Auto: San Andreas tonight and my first impression, it rocks! From the first cinematic which includes the voice of Samuel L. Jackson, to the much more realistic in-game physics, it is simply and purely better than the other GTA games. The sheer size of the city is also amazing. It took me 20 minutes to get from one side of the island to another and the only reason I couldn't go further was because I hadn't completed any missions. The amazing part, that island wasn't even a quarter of the map. I found out very quickly what happened if you try to go outside the bounds of your play area though. Immediate four star wanted level and snipers in the choppers. Definitely something to avoid. I was able to survive for quite a while in the speed boat though. The police patrol boats are easy to avoid and don't pack much firepower (or accuracy). One of my favorite new features is that you character actually grows and gains skills based on what you do in the game, adapting to your playing style. For instance, if you spend a lot of time in the car and not much time walking around, you will start to get fat. I think that this is pure genius on Rockstar's part and applaud them for the deep thought that went into this game. You can really tell that everything was well thought out and thouroughly implemented. If you haven't played this game yet, I highly recommend it. Well worth the $50.

Another game that I had a chance to take a look at tonight was Halo 2. My brother got this game for his Xbox and is loving it. I caught a couple glimpses of it over his shoulder and noticed a few key differences from the first game. First of all, the graphics detail looks a lot better. It appears that they completely tore apart the graphics engine and rewrote it from scratch. It needed it. Secondly, they upped the screen resolution under the assumption that gamers will be playing this game on larger, higher-quality, screens that make it much easier to read small text. This helps to get the status displays out of the way so that you can focus better on the action. From what I heard my brother saying, a lot of the other annoyances about the first Halo game were resolved including the ability to now set unlimited frags in a multiplayer game. This has been a definite hinderance on our kill-fests until now. Good job Microsoft! All in all, Halo 2 seems like it's just a souped up version of the first one. If you didn't like the first one, don't bother with the second. If you even remotely liked any part of the first one, it's worth the money, every aspect of the game has been improved in one way or another.

Aside from gaming, things have been pretty quiet around here. I met with Matt Haas, my Unix professor last week and spent a good hour talking to him about various topics, mostly centered around distributed computing. He has me and one other student working on a problem to prep us for the upcoming distributed systems class that he'll be holding next summer. We're working with some matrix multiplication code and learning how to thread, multiprocess, and distribute the load of the program to more than one system. It has been an interesting study in high-cpu software implementations. It's been a lot of fun except that Matt is in Pittsburgh for the SuperComputing 2004 conference so we really haven't had much time to talk about the progress of the program. I think I'm to the point where I can start threading it out and distributing the work across more than one function call but I'm not quite sure how I'm going to go about this. It won't be too hard to solve, just an implementation problem. I'll get back to it when I get a few minutes.

Finally, I'm working on college applications for Arizona State and Rensselaer Polytech this week. It looks like I've got a good chance at either one. Honestly, I can't wait to start college. It looks like it's all going to be a ton of fun. Well, I think I'm done talking for the moment. Ciao!

Cameras, Photos, and Linux From Scratch


As you can probably tell by the time of this post, I have just finished a really cool project. I spent the approximately the last 24 hours building a photo gallery for my pictures. It is written in PHP5 with a MySQL backend. Not bad for a day's work I might say. There's still a lot of work to be done to clean it up and make it XHTML compliant. I used a lot of little tricks that break specs to get it to look right. I noticed that it also looks terrible in Internet Explorer. This will probably be a higher priority concern because I want to be able to showcase my work. Either way, it is a functional design and seems to be serving it's purpose quite nicely. I don't plan to post every picture I take, just the good ones. Influenced by this small fact, there is very little content at this point. Don't worry, it will get better.

In other news... I managed to weasel my way out of work for a few days this week to give me more time to work on some of my projects such as the aforementioned photo gallery. I have also started work on a new Linux From Scratch system. I have taken quite a bit more time on this one to get it done right. One of the major factors in this was getting it to cross-compile correctly for i586. There are plenty of hacks out there but I wanted to do it right (eg. using --build and CHOST flags). In my endeavors to create a more precise LFS system, I have also successfully setup a small DistCC cluster of my most powerful systems. This allows me to compile packages at almost double the original speed. The SBU (or Standard Binutils Unit) for this setup is 2 minutes flat. Before enabling DistCC, I was straining to keep 3 minutes, 42 seconds. These speeds are greatly impacted by the fact that I'm building it on top of VMWare on my Windows XP system. I am doing this because I don't have the time to backup and rebuild it right now. But because I am using DistCC and pulling power from a few other systems, I am able to make up the difference and then some.

I also recently received a Canon Powershot A75 digital camera as a late birthday present. I have to say that it isn't a bad camera at all. I'm able to play with some of the finer tweaks like ISO speed and shutter speed, but am still able to use it as a point-and-click camera. It's exactly what I was looking for. I'm sure you've guessed by now that this camera was my motivation for writing the photo gallery. Indeed, you are correct. I played with a few gallery services and scripts but didn't find anything I liked. It wasn't an extremely hard task to complete and gave me a chance to brush up on my PHP and take a glance at PHP5.

Server Playgrounds


I've been researching alternate firmware for my Linksys WRT54Gv2 wireless router. When I first got the router I did some searching but it seemed that nobody was able to get anything working on the v2 series. I ended up just sticking with the Linksys firmware and I have been using that up until now. Anyway, in the course of my research I ended up typing WRT54Gv2 Linux into Google and noticed that my systems page was listed number 10 on the first page of the results. This gives me some motivation to actually put something useful on this website.

Last week I got to play around in the server room all day. I moved a couple of servers around the rack and installed a new one. The new one will be used as a CVS server for keeping track of all of our administrative scripts and configuration files while we beta test the new version of WebCT. I got to build the new server myself. After learning how to use an Alpha bootstrapper I proceeded to install OpenBSD. I kind of glazed through the install (big mistake) and had a fresh system up very quickly. This was also partially due to the fact that we already had all the OpenBSD packages available on the LAN. 50 MB/s downloads are sweet :P

So, as I alluded to earlier, I made a mistake during the install. I never created a swap partition. Granted, this shouldn't be a big problem because it will be a very low demand machine and has 512 MB of memory (plenty for CVS) so it will probably never touch the swap space but this still makes it unstable. We'll live with it though.

Tomorrow morning at 5:00 AM we're taking our primary SAN offline so that we can install a new Alpha on top of it in the rack. The SAN has to go down as well because it will be directly connected to the new Alpha which will be running our Banner database from now on. That's why we needed to move things around the rack in the first place, to make room for this big-ass Alpha.

Over the weekend I rebuilt my Windows Server as an OpenBSD system. I enjoyed it thouroughly. The only real problem that I ran into was that when I FTPed all of my music back on to it I ended up with %20 in all of the directory names where there should have been spaces. This was cool though because it gave me a reason to learn to use for loops in bash script. After stumping my UNIX professor with the problem for a while I got it working and have put a copy of the fixspaces script here.

Daily Grind


Despite the length of my average day, I seem to be holding things together pretty well at the moment. For the last hour or so I've been working on my Research Paper on the United States Secret Service. I am beginning to realize that there may actually be interesting subject material outside the major technical engineering fields (Computing, Aerospace, and Architecture). Did you know that the Secret Service was originally created to combat counterfeiting? At the time the Secret Service was formed, an estimated one-third of all currency in circulation was estimated to be counterfeit. Did you know that the Secret Service is the only government agency to require tassels on your shoes as part of the dress code? I don't think anybody else could get away with that... Not even TLC.

I've been reading through the Wireless Hacks book that I mentioned this morning. I'm about halfway through it and am learning some really interesting stuff. I particularly like the idea of using a Bluetooth cell phone to control your media player however, no programs that actually do this have been written for Windows yet. Although it wouldn't be very difficult to hack it up as long as you could hook into the Bluetooth events interface. I already know from previous experience (quick hack) that the APIs on Winamp are open to development so it can definitely be done on that end. Yet another interesting idea that I will never pursue provided that I don't have access to a Bluetooth cell phone or computer. Oh well.

Don was wandering around the office earlier and sat down at my desk to flip through the Wireless Hacks book. He also managed to take a peek at my laptop which was running BlackBox at the time. I asked him if he knew a way to lock the system with BlackBox without using XScreensaver. He pointed me towards an archaic program called xlock. As it turns out, XScreensaver was actually derived from xlock although I think xlock has a much simpler interface (you run it from a command line with an argument specifying the screensaver you want).

At lunch, we played Half-Life: Counter-Strike and switched to the Rocket Crowbar mod halfway through the hour. I really started to kick ass with that crowbar. I probably got a good 8 or 9 frags with the crowbar alone. Not to mention a few well placed satchel charges and a few of those little bugs that shoot lasers. It sounds like I'm crazy but it's true! If you haven't tried this one, it's definitely worth some attention.

In Biology class we split open some muscles and looked at it through the microscope. This is the kind of thing that makes me wonder why it's a required course. Did I really learn anything from this other than where to find the anus on a muscle? No. I don't see how that will ever become useful to me in life. Go figure.

Last night I got into a cleaning frenzy and moved everything in my bedroom around. I can't wait to get home to where I can lie down in my bed and curl up with a good wireless signal. Life is good.

Cameras and Wireless Security with OpenBSD


I started looking at digital cameras today and came across the Canon Powershot A75. Of all the sites that I checked out, it seemed to be the "most bang for the buck". It's more of a point-and-shoot camera than anything else, perfect for what I plan to use it for.

Also spent some time at the mall earlier. I ended up buying a couple of books (how lame). One of which was Wireless Hacks by Rob Flickenger. I've been meaning to get this one for a while but haven't been to Barnes & Noble in a while.

Anyway, as I was reading through the first couple pages of it I came across a section where each protocol is defined and explained in very basic terms. It really just reiterated things that I already knew, but I also learned a few new things. One of these protocols piqued my interest though, 802.1x. Now, I know this isn't exactly a wireless protocol but it's something that I've been meaning to play with for a while. It basically allows port-based authentication, usually authenticating against a RADIUS server on the backend, another topic I've been meaning to put some reasearch into.

After realizing that there wasn't much more about 802.1x in the book, I started looking through the configuration pages of my Linksys WRT54G AP. I found that it indeed had the ability to authenticate against a RADIUS server for WPA clients. So I set about researching the RADIUS server end of things.

Because this is a security oriented protocol I decided to install it on my OpenBSD firewall. After a quick search through the ports collection I found two RADIUS daemons, cistron and lucent. I was however, unable to find any real documentation distinguishing the two I decided to install the cistron daemon. From what I was able to gather on the net, the cistron daemon was forked to create a much more popular daemon called FreeRADIUS. I didn't feel like compiling FreeRADIUS from source by hand so I just had the ports collection do all the work with cistron.

After getting it installed and spending a few minutes reading through the man pages, I had added an entry to rc.local to make it run at startup and had an idea of how everything was supposed to fit together. I played with the extremely un-intuitive config files for a few minutes and decided to focus my attention elsewhere for now.

I went back into the wireless router's config and turned on WPA RADIUS authentication and gave it the IP of the RADIUS server. At this point, I was at a loss as to how to configure Windows to use RADIUS authentication on the wireless interface. I found a couple of sites detailing how to do an end-to-end setup using Windows Server 2003. I figured that the client portion would be mainly the same and gave it a shot.

It worked up to a certain point. The RADIUS daemon was complaining about an unauthorized connection from the AP. After about an hour of messing with the config files (they really are difficult to understand) I managed to get the daemon to recognize the AP as a RADIUS proxy. At this point, I was getting unauthorized user errors from the daemon and decided to call it a night. I'll play with it some more when I'm not as tired. From the looks of things though, all that I should need to do is add an entry to the users file to make it accept my credentials and allow me port-level access to the AP.

I did notice in a few places that the daemon supports reading usernames from a MySQL database. I've been thinking about this for a while and I've pretty much decided that I'm going to wipe Athena (Windows Server 2003) and install some Unix variant on it. Currently, it's responsibilities are external DNS and internally sharing out my music collection. As far as I can recall, it doesn't do anything else.

If I install a *nix system on it I'll be able to use Samba to keep the file shares working and use a chrooted BIND for DNS. It's got a lot more power than my current web server, Artemis and will allow me to have a box that isn't so restricted. It won't matter if Athena goes down for a few hours while I play with it. I figure that I can install MySQL on it and use it as a backend database for any apps that I write on the web server. This will also give me a lot more flexibility in the area of security. I can try out a few theories that have been floating around the security world lately.

The only question that remains is which Unix variant to install. I've really started to like OpenBSD but I just don't think it's flexible enough for what I want to do with it. If I were to go the Linux path I would prefer my Linux From Scratch system, Petra but this would leave me out in the cold for tech support and community mailing lists. However, I've really been itching to play with the GNU/Mach Microkernel so I may build a new LFS system for that. Another possibility would be to use a common Linux distro. I would probably end up with either Debian or Gentoo. I prefer Gentoo but Debian is a lot more stable and has been tried and tested for quite a long time.

I'm still not quite sure where I'll land myself on this debate but I'll figure something out before I commit a weekend to building a new system. Hmm, that reminds me... It takes two days straight at the console to build a fresh LFS system. I really don't enjoy spending that much time compiling packages so the payoff had better be worth it.

Getting back to the subject here... I bought a copy of Wireless Hacks because I would like to start building some custom hardware to work with my wireless setup and give me some better range. I have very little idea where to start on this so I figured that this would be a good book to learn something from. From the looks of the table of contents, this book is filled with just that kind of stuff... Explaining that strange divide where analog meets digital.