James Cassell's Blog

Sunday, March 30, 2008

Evolving Banner Blindness

Banner blindness is a phenomenon where people grow to ignore ads on web pages. It started out as just ignoring flashy colorful banners. Recently, I noticed that I have developed a banner blindness to Google text ads. While this banner blindness can improve efficiency in browsing the web (if such a thing can be considered efficient), it can also lead to overlooking legitimate information.

The other day, I downloaded Sabayon Linux to see what it was all about. When I was running the live media, I was about to click "next" when I said to my self, "Hey! What's a Google ad doing in a live distribution options dialog?" I then realized that it wasn't a Google ad, it was simply a table of features and descriptions of those features.

There are two possible conclusions that I could draw. The first would be that I should never format information such that it could be mistaken for an advertisement. The secound could be that I should try to curb my banner blindness so as to not miss legitimate information formatted in this way. Perhaps, both conclusions are correct; they are not mutually exclusive, as far as I can see.

Labels: ,

Wednesday, March 26, 2008

Fedora 9 Beta

Yesterday, the beta of Fedora 9 was released. Overall, I am very impressed. The live CD, which actually fits onto a CD this time, booted with no problems on all of my systems. I was very pleased to see that they fixed a bug where one couldn't get 1920x1200 resolution. Everything works pretty seamlessly.

Having said that, it is obvious that this is a beta release. There are many bugs that need to be worked out, but the overall functionality is there.

One of the main problematic places for bugs is in SELinux policy. Many things that I try to do get blocked by SELinux, including updating the system. Of course, this will be worked out before the release, but it is an annoyance at the moment.

I am definitely excited for the upcoming release of Fedora 9, even though it is a whole month away. One thing that is interesting is that Microsoft will wait for 3 months after they have completed their code to release it to the general public, while that is half of a release cycle for Fedora.

Labels: ,

Monday, March 24, 2008

Why Not Silverlight

Recently, Microsoft has been pushing its relatively new Silverlight web technology. Microsoft is posing it as a competitor to Adobe's Flash technology. I don't like either of these technologies due to their proprietary nature. Flash has been around for quite a while, and is nearly ubiquitous. It has become so prevalent that it is very annoying to browse the Internet without it. I am not going to help Microsoft create the ubiquity of another such proprietary technology.

Microsoft is trying to push out Silverlight via Windows Update. On all the computers I keep updated, I have specifically opt-ed to not install this update. There is an open source implementation of Silverlight being written, but even if it is written to spec, Microsoft's will inevitably have bugs, and their implementation will become a de facto standard, similar to how the rendering engine of Internet Explorer 6 was, for a long time, the de facto standard of how web pages should be rendered.

The same holds true for Flash; there is an open-source implementation, but it does not work nearly as well as Adobe's implementation. This continues to be a point of annoyance as Linux distributions generally don't come with proprietary code on the install disc.

Labels: , ,

Tuesday, March 11, 2008

The Cost of Turing Tests

The other day, I had the pleasure of visiting my aunt and uncle. When I was over there, I showed them my the website I had created for the National Honor Society at Mountain View High School, as well as my blog. We came upon the topic of Facebook. They were interested in what it was all about, so I logged in to my account, and showed them around.

One thing that arose was them wanting to click on things that would appear to other people as if I had done, and, for obvious reasons, this was undesirable. My uncle proposed that my aunt create an account, as it requires very little effort to do so. She entered the necessary information, but the page came back saying that she had typed the CAPTCHA incorrectly. At that point, she decided that she did not want to create a Facebook account -- for my aunt, the marginal benefit of having an account was less than the marginal cost of typing in the CAPTCHA.

The purpose of a CAPTCHA is to tell humans and computers apart. It is basically a Turing test. A Turing test is supposed to be a task that is trivial for a human to do, but nearly impossible for a computer to do. As it turns out, they are often onerous for humans to do, and computers have been able to do them in all cases with at least some success. In this case, Facebook lost a potential user due to the difficulty of their CAPTCHA.

Labels: , ,

Monday, March 10, 2008

Communications Cryptography and Key Signing

I have recently become interested in the encryption and authentication of messages. Several months ago, I started reading up on PGP and its open source implementation GPG. Basically, this is a technology that allows only the intended recipient to read a message. It also allows for the authentication of the sender.

This authentication and encryption is accomplished via public-key cryptography. Basically, each person has two keys: one public and the other private. The public key is given to anyone for verification of a cryptographic signature, or to enable him to send the owner an encrypted message. The private key is used by its owner to sign outgoing messages, and to decrypt incoming messages; it is never disclosed.

The preceding is a very simplified explanation, but should provide a basic idea of what is going on. There does come a small problem: how can you know that the public key you have for a someone is really owned by that person? This is where key signing comes in. One solution to this problem is to meet in person and exchange keys, but it would be a pain to meet each and every person with whom you wanted to communicate. Therefore, when you meet in person and exchange keys, you also sign the key of the person you met to inform people who trust your key that these new keys actually belong to their apparent owners.

A web of trust is created by many people signing each other's keys. In general, the fewer hops in this web between your own key and and other key indicates how much you can trust the authenticity of that other key.

Anyway, I have not yet attended a key signing party. I was pleased to find out that the ACM at Rensselaer is going have such a key signing party on March 24, 2008. Hopefully there will be quite a few people there so as to greatly increase the size of this "web of trust."

Labels: ,

Monday, March 03, 2008

Parallels Between Blogging and Programming

I have been programming quite a bit lately; my Computer Science 2 class assigns an involved programming problem each week. These take several hours each. When I work on my project, I go about writing my code, and as soon as I need to reference some other piece of code, I will change gears and write at least the interface for it (i.e., the prototype). I will later go back and write the implementation of the function or class that I prototyped previously.

I find that much of the same happens when I am blogging. As I am writing, I think of other posts of mine that I would like to reference (i.e., link to). Many times, I find that I have never written such a post. While I haven't been able to link to non-existent posts, I have written down notes for myself to go back and write such posts in the future. My "about" page is one post that I made so that I would have it for future reference. My post about my Alienware notebook is one that I had tried to reference on many occasions, only to find that it didn't exist. Yesterday, I finally got around to writing the proverbial "implementation" of that which I had tried on many occasions to reference.

In writing code, there are many ways to achieve the same results, but have the code look very different. One can write two statements that are logically identical but are syntactically different. It is the same with the creative use of language; I can divide my thoughts with a semicolon, a period, or in less formal writing, (such as a blog,) with an em-dash. There are, of course, many other ways to vary the used syntax, but retain the same meaning. If one does not master this variation in the use of syntax, his writings end up being quite dull and boring, much like the first several years worth of posts on this blog.

Just as I am happy to continue learning programming syntaxes and constructs, I am interested in learning and practicing proper grammar in all areas of communication. This is the one area of "humanities" that I have ever enjoyed; I have never liked the critical analysis of literature or other such things.

Labels: , ,

Sunday, March 02, 2008

Alienware Notebook

It is extremely late to be writing this post, but, I have tried to reference it on a few occasions only to find that it didn't exist. In August of 2006, I made my first major purchase (read: over $1000.) I had amassed a non-trivial amount of savings, a large portion of which I wanted to spend on a laptop computer.

Planning

After looking at some of the available options, I had formed several requirements. First, the new computer had to have a high-resolution screen, preferably 1920x1200. Second, it had to be more powerful than my existing system, which was an AMD-based desktop (that I still have and use today.) My third requirement was formed later in the game -- I wanted my keyboard to have a full numeric keypad. These requirements ruled out most of my options. Initially, I wanted to buy a bare-bones notebook which I could build myself, but there weren't many of these, and none of them met my requirements.

Purchase

The numeric keypad requirement limited me to 17-inch models. The hardest requirement to fulfill was that of the high-resolution display. The only notebooks that seemed to have this were Alienware's. I priced out an Alienware, and found that they charged way too much to upgrade the processor or memory compared to how much it would cost to do so myself. I priced out and purchased a system with the upgrades in place that I wouldn't be able to perform myself; the system came out to just over $2000. The two major limitations of this configuration were the processor and memory. The system I bought had the bare minimum in terms of memory: two 256-MB sticks for a total of 512 MB. My processor was the Core Duo, T2300 clocked at 1.66 GHz. Ironically, three days after my system shipped, four days before I received it, Alienware started selling my system with the Core 2 Duo chips. The most obvious advantage of the Core 2 over the Core is its 64-bit capability. Needless to say, I wished I had waited several days before ordering.

Performance and Upgrades

I got the machine with Windows XP Media Center Edition, but, shortly after receiving it, I over-wrote XP with the release candidate of Windows Vista. Having only 512 MB of memory meant that Vista didn't run too well. I did make use of the new ReadyBoost, which made a noticeable albeit minimal improvement in responsiveness. About two months after buying the system, I got around to upgrading the memory to 2 GB. The system ran much more smoothly after that.

The machine played machines decently well; it could play Half-Life 2 at full resolution at a very playable frame rate. The video card in the system was the high-end ATI Mobility Radeon X1800. I actually didn't play too many games on it due to school and other things occupying my time, though it did play them well when given the chance.

In June of 2007, I again upgraded the memory, this time to 4 GB. Some of this was wasted potential as Vista only recognized about 3.5 GB. I upgraded my mom's newish laptop with the old 2 GB from my system as I had no other use for it. In July, I did another upgrade; I upgraded my processor to the Core 2 Duo T7200 clocked at 2.0 GHz. Again, I upgraded my mom's laptop with the older processor, bringing her to a dual core from a single core system. This left my hard drive as the least capable piece of hardware in my system; it only held 60 GB of data, and was only a 5400 RPM drive. I never got around to upgrading this part of the system.

Current Status

This leaves my system specifications as follows:

  • Alienware Area 51 m5750
  • WUXGA (1920x1200) TFT "Clearview" 17" display
  • Intel Core 2 Duo T7200
  • 4GB DDR2 667MHz RAM
  • ATI Mobility Radeon X1800 (256MB) Graphics Card
  • 60 GB 5400 RPM Hard Drive

This system currently serves as my secondary system, and is my Windows machine. My Rensselaer-issued Laptop currently serves as my main machine and runs Fedora 8. My two servers run Windows Vista and Fedora 8, each serving its purpose. Perhaps this summer, I will have time to play Half-Life 2: Episode 2 and Portal to make use of this once cutting-edge, but now aging technology. In total, I have spent a little over $2600 on my Alienware, including the initial system and subsequent upgrades.

Labels: , , ,

Thursday, February 28, 2008

Best Tool for the Job

I have recently become quite interested in open source software. As a matter of fact, I have made it to a point where I prefer, for example, Linux (in my case, Fedora,) over Microsoft's Windows. Given two functionaly equivalent pieces of software, one open source and the other closed, the clear choice is the open source option. Having said that, I will choose the best tool for the job regardless of whether or not it is open source.

One example of my choosing the best tool for the job is my choice to use Opera as my web browser. I like opera because it is a lightweight browser with a rich feature set. It has an integrated feed reader, mail client, chat client, as well as many other useful features.

More recently, I switched to using Sun's Java virtual machine as an alternative to the using the fully open source version that came bundled with Fedora. I am guessing that the open-source virtual machine has some unknown incompatibility with my hardware; Eclipse, my java-based development environment, had many stability problems until I switched virtual machines. I had been blaming the extremely poor performance on Eclipse and the fact that it was written in Java when, in fact, the problem was a faulty implementation the virtual machine. (This problem actually gave me a large amount of grief; my Google searches turned up no one else with the same problem, which is quite unusual for any computer-related problem.)

Another proprietary program that I decided to use instead of the open-source alternative is NX, a remote desktop solution that works on both Linux and Windows. I initialy tried the open-source version of it, but that gave much grief.

There are also a great many open source tools that happen to be the best tool for their respective jobs. Examples of these include Linux itself; Eclipse, my IDE; Pidgin, my instant message application; as well as a great host of other open source software solutions.

One tool that happens to be the best for its job is µTorrent. This is the absolute best Bit Torrent client available. Unfortunately, it is only available on Windows. This has been my stated reason for still having Windows Vista on my Alienware notebook. I have read that µTorrent can be run on Linux through WINE, but have had neither the time, nor the modivation to try it to this point.

Linus Torvalds, the mastermind behind Linux, also happens to hold this viewpoint. At one time, it came back to bite him. He had been using a proprietary solution for keeping track of the Linux kernel source code, but the company decided to not renew the free license that had been granted. Linus's solution to this problem was to write a new best tool for the job: git. Git is now the fastest, and arguably, the best tool for keeping track of source code. Linus was fortunate enough in being a genius that he could simply write the best tool for the job when the old one was no longer available to him.

(At this point, I'm just rambling as I'm very tired; I'll clean this up later.)

Labels: , ,

Wednesday, February 27, 2008

Correlation Between Font Size and Screen Brightness

Over the course of the day, I began to realize that there exists a strong inverse relationship between the size of the font on the screen and the light required to comfortably read it. I noticed that when I am in class, I have my laptop screen on the dimmest setting so as to allow my battery to last longer. At this low brightness setting, in a bright classroom, I blow up whatever I am looking at to nearly double its native size to be able to read it comfortably.

At the other end of the spectrum, I significantly decreased the font size in Eclipse, my programming environment, so that I could see more of my code at once. After doing this, the first thing that I did was turn up the brightness on my screen, which allowed me to see my code much more easily.

I am sure that this trend has its limits in either direction; if you get too dark, you won't be able to see the text, no matter how large you make it. Since the human eye only has a certain level of precision, if you make the text too small, increasing the brightness will not do enough to make the text readable. I am fortunate to have good enough eye-sight for this observation to hold for a relatively large range of brightness levels.

Labels: ,

Sunday, February 24, 2008

Hard Drive Encryption Vulnerability

Within the past few days, a vulnerability in the implementation of hard drive encryption was publicized. The problem applies to just about all hard drive encryption schemes -- Windows and Linux alike.

The Problem

The root of the problem is the same as the problem with DRM; the computer must hold the decryption key in order to be able to make use of the encrypted resource. This has been implemented by storing the key in RAM, which, common knowledge tells us, loses its contents when power is lost. This common knowledge assumption has a caveat that is not common knowledge; this loss of memory is not instantaneous. The memory may hold its contents for minutes after it loses its power. If the RAM is chilled before having its power cut, it will hold its contents for hours.

There are several ways that this can be exploited. If someone steps away from their laptop for a moment, an attacker could cut the power, connect an external device from which to boot, and their device could copy the contents of the memory onto itself. Somewhere in this copy of the memory would be the encryption key, which can be used to read the contents of the drive.

A Possible Solution

The article I referenced says that "There seems to be no easy fix for these problems." The hardest part of that assertion to contradict is the "easy" qualifier. However, upon reading about this problem, a seemingly obvious solution came to me. Modern processors have plenty of registers as well as on-board cache. Why not reserve one or more of these registers to hold an encryption key? If using a register would be too expensive, surely it would not be too expensive to use some of the plenteous cache that modern processors possess.

Upon considering this, I realized that people may very well want to have more than one encryption key. A possible solution for this is to store a key (say, a 256-bit key) that is randomly generated each time the system is booted. It could be stored in the manner I described above. This key could then be used to encrypt any other encryption keys before they are stored in RAM, and to decrypt them anytime they are retrieved. The only thing that needs to be done is to ensure that this randomly-generated key does not ever find itself in RAM.

A Word of Caution

Before writing this, I searched through the several hundred comments on the article, and found that several other people had mentioned the processor cache, asking if it were vulnerable. This indicates to me that this solution is, to some extent, common sense. It would be necessary to have security experts examine this approach before anyone tried to implement it, so as to avoid another disaster similar to what happened with the fatal weaknesses of WEP.

Labels: , , ,

Friday, February 22, 2008

Validating Input

When writing code, always validate the input. This may seem like common sense -- and it is under most circumstances -- but in one particular case, it is not. In the case of a computer science class when the instructor guarantees proper input, it is very tempting to not validate the input and simply assume that it is correct. This will save you a little time on each assignment, but is not worth it in the long run. I found this out today. I had a computer science project due at midnight last night. I didn't have it done on time, so I had to waste my remaining late day on it. I spent nearly 24 hours trying to debug my program that should have been working.

When I was debugging, I kept seeing things that could go wrong with improper input, but remembered that I only had to deal with proper input. My program seemed very brittle; the difference between a segmentation fault and the program running fine (but exiting early) was the difference between a break; and a continue; statement. It was at this that I randomly noticed that there was one line of the input was causing the crash. The input was improper despite assurances of the contrary the instructor.

I checked on-line to verify that I didn't mistakenly modify the file. Sure enough, the file on-line was correct, but the date on the on-line file was more recent than the date on my file. Apparently, the teacher noticed (or was informed of) the mistake, and updated the files on-line. What he did not do was send a general notice of the mistake and subsequent correction. Because of all this, I wasted nearly 24 hours of my time as well as a "late day" for turning in homework.

The moral of the story is that one should always check his input even if it has been guaranteed that it will be correct. The benefits of checking the input greatly outweigh the costs. Besides this, it is simply good practice, especially for any code that will be used in production. I had to deal with this when I was writing the contact form for my site; most of my time was spent writing the validation code to prevent any security problems.

Labels: , , ,

Wednesday, February 20, 2008

Briefly: Dvorak Update

I recently switched exclusively to the Dvorak keyboard layout and have been going at it for nearly six weeks. Dvorak is almost second nature to me by this point; my speed is still not as high as it was before I switched, but I expect to get there soon. I am currently typing at around 42 words per minute, not discounting for errors. This is about two thirds of my speed on the qwerty layout. My most common typing mistake with the Dvorak layout is mistakenly typing the sequence "it" instead of the sequence "ti" (e.g. as in "imagination".) I usually catch such mistakes before I publish by means of running a spell checker.

Labels: , , ,

Sunday, February 17, 2008

Communism in Open Source Software

At first glance, in the area of technology, and more specifically, in open source software, it appears that there exists a thriving communist community. Now, everything that my other opinions point to would say that, in practice, communism is doomed to failure, and is a very bad thing (e.g. Nazi Germany, or the Soviet Union.) My initial thoughts on this issue told me that technology is an exception to my previously-stated opinions of how things should work. Upon further observation, I realized that the notable examples of open-source software successes have always had the backing of some corporation.

For example, Ubuntu, the most popular Linux distribution, is financially backed by Canonical. Another example is Firefox, which is backed by Mozilla who relatively recently formed a for-profit entity so that they could legally make a profit from Firefox. (Much of their money comes from advertising partnerships with Google.)

Additionally, you have the open-source database, MySQL, which makes money by selling licenses to use their software to commercial entities. MySQL was recently acquired by Sun.

An example that is closer to home for me is Fedora. This is my preferred distribution of Linux (and the one I am using to type this post). Fedora is backed by Red Hat who sells another commercial distribution of Linux.

Perhaps, the two most successful open-source projects of all are the Linux kernel itself, and the Apache HTTP Server. The Linux kernel has many financial backers, many of whom are mentioned on the Linux Foundation Members page. The Apache server is the most commonly used HTTP server on the planet. It also has many financial backers who are featured on the respective Apache Thanks page.

This post is turning out much differently that I initially thought it would. Don't get me wrong; I think that free open source software is an excellent thing, and that all that people can do to promote it should be done. Having been using free open source software almost exclusively for about three and a half months, I will say that it has reached a point where it poses a legitimate threat to Microsoft; it offers a viable alternative to Microsoft software to the average user. I could have used many more examples of open source projects that are financially backed by corporate entities, but I think what I have gets the point across. Even in the area of technology, communism does not work.

Having said all this, I have seemingly left out all the open-source developers who have donated much their time to improve the quality of open-source software. I would like to thank all those who have done so, and encourage them to continue their good work.

P.S. I initially had this as a rather large section of my previous post under the heading "Technology".

Labels: , ,

Saturday, February 16, 2008

Politics: Where I Stand

In general, my position on any given issue will be conservative. My source for absolute truth is The Holy Bible -- anything that contradicts the Bible must be wrong or inaccurate. As a result of what I just stated, my opinion on any issue (excluding technological issues) will be in stark contrast to that of the Digg crowd.

Moral Issues

I believe abortion is wrong and should be illegal. By extension, I believe that embryonic stem cell research is wrong and should also remain illegal. I believe that there is nothing wrong with capital punishment. One thing that I makes no sense to me is why many "liberals" want to permit the murder or "abortion" of innocent babies, but wish to prohibit the governmental execution of murderers.

As far as marriage goes, I think that we should have a federal marriage amendment specifying that marriage is between one man and one woman. I find it absurd that such a thing is even necessary, but with the state of the world as it is, sadly, such an amendment is necessary.

Economical Issues

Taxes should be kept to a minimum. All they do is hurt the economy (also, I want to keep more of my money.) I think getting rid of the income tax and replacing it with a consumption tax is a good idea. (Granted, this introduces the problem of people spending their money in other countries, but I'm sure there are solutions to this problem.) I personally hate debt, and therefore, think that the national debt should be kept to a bare minimum. Basically, I think that the government should take less of our money and also spend less of it.

Smoking and Drugs

I believe that both smoking and drugs (for non-medical uses) should be illegal. Just because someone wants to destroy their lungs doesn't mean I should have to have mine destroyed as well by means of inhaling their crap. An article: "A Different (Conservative) Take on the Proposed Smoking Ban" expresses this very well (in relation to a proposed smoking ban in Iowa). It is argued that tobacco is a drug and should be regulated as such. My favorite quote from the article, "your liberty ends where mine begins," very well expresses why there should be such a smoking ban.

Personally, I will never smoke, nor drink (alcohol). When I see someone smoking, my opinion of him drops substantially; if someone doesn't have enough respect for his body to not destroy it, my respect for such a person is equally degraded. For some reason, I don't frown as much on people who drink with moderation. I simply have made a personal decision to never drink.

United Nations

The idea of the United Nations having any control or influence over the United States does not sit well with me. Its very existence seems to threaten the sovereignty and independence of our nation.

This actually brings up another issue: currency. There are many European nations that have given up their sovereignty by giving up their own currency and adopting the Euro as their official currency. I would like to believe that the United States would never do such a thing, but inevitably, some time down the road, either the United States will cease to be a nation, or it will buy into a global currency. I hope to not be on this planet when such a thing happens.

Technology

I believe I should be able to do whatever I want to with my technology as well as my media. The DMCA or Digital Millennium Copyright Act of 1998 severely curtailed what people are allowed to do with their media. For example, it criminalized the copying one's DVDs to one's hard drive. It basically made it illegal to circumvent any sort of DRM (Digital Restrictions Management) scheme, "even when there is no infringement of copyright itself."

Another political technology issue is software patents. Initially, such patents were not allowed because software is nothing more than math, and math can't be patented. To get around this, companies described their software as hardware, and added a footnote that the preferred implementation is in software. Somewhere along the line, software patents became accepted. I am strongly opposed to allowing software patents. They do more to stifle innovation than to stimulate it. There are companies whose whole business model revolves around collecting these patents and suing other companies for infringement. A prime example of this is the Eolas suit against Microsoft for its use of web browser plug-in technology. Eolas won the suit. The prevalence of such patents strongly discourages new entrants into the market.

Conclusion

As you can see, my views are strongly conservative. If I did not address an issue here, either it slipped my mind, or I found it to be so much common sense that it didn't warrant a mention. (Sadly, there are many issues that fall into this category; they are such common sense that there should be no argument around them.) If you want me to address any particular issue, just leave a note in the comments, and I will update this post (or add another) addressing the issue.

Labels: , , ,

Tuesday, January 29, 2008

File Server From Scratch

Back Story

Back in early December before Christmas break, my desktop computer, which had been serving as a server, was running very low on disk space. My immediate solution was to buy another hard drive. I ordered a 750-GB hard drive from NewEgg. As Murphy's Law would predict, my roommate's LCD TV, which I had been using when I needed a screen on my desktop, bit the dust (stopped working). I had no way to tell the BIOS that there was a new disk, and to keep booting from the old disk. I tried to reconfigure the BIOS from memory without any visual feedback, but only managed to make the system unbootable.

Decisions

Fast forward a few weeks to the middle of vacation. I had, by this point, decided that I was going to build myself a storage server with RAID-5 redundancy. I had several decisions to make, the first and most important of which was whether I should go with Intel or AMD. This would dictate my selection of motherboards, as Intel motherboards and AMD motherboard are mutually exclusive. My second major decision was whether I would go with hardware RAID or software RAID. Obviously, hardware RAID is the better option if money is not a factor, but software RAID cost is very low. In reality, software RAID is not free as it appears to be, but rather, the cost is hidden in the fact that motherboards with many SATA ports are significantly more expensive. As far as the choice of processor manufacturer, there is always a battle going on between Intel and AMD. AMD had been winning until Intel released their Core 2 platform. Since then, AMD has come back with their Phenom processor, which is marginally better than the Core 2, but not enough so to justify the premium price.

While considering the previously mentioned choices, I decided to go ahead and order a case to put everything in. I was initially considering a traditional rack-mount server case, but found them to be prohibitively expensive. I ended up ordering a Cooler Master "Ammo 533" case that was on sale and has subsequently been discontinued. This arrived at my house about a week before I ordered any other parts on-line.

My best friend informed me of a computer show that was going to be taking place at the Dulles Expo Center in Chantilly, Virginia, so I decided that I would look there for computer parts, hopefully at greatly-discounted prices. He and I drove out there to have a look. For the most part, prices were not particularly competitive with on-line retailers. The prices were often within $5 or so, but I think that is worth being able to return an item in the case of failure or DOA. I actually ended up buying a power supply at the show (in addition to some canned air). Later, I found out that I had paid way too much for the power supply and that it was missing some parts that should have come in the box. My friend and I have subsequently decided to boycott the show as the only purpose it serves is to rip people off (or rather to trick them out of their money by offering them sub-par merchandise).

Purchase

By this time, it was about a week before I had to go back to school, so the urgency of the project went up significantly as I would have little to no time to do it once school was back in session. I finally decided to build an Intel-based machine. I looked briefly on eBay for good prices on the processor as I had done when upgrading my Alienware notebook. No such luck -- it's very hard to compete with NewEgg. I decided to go with the Core 2 Duo: E6750 for the processor as it seemed to be the best balance of price and capability. I went with the Gigabyte GA-P35-DS3P Rev 2.0 motherboard as it had plenty of SATA ports and mostly good reviews. For the memory, I went with the G.Skill 4GB(2 x 2GB) DDR2 800 Dual Channel Kit. I went with the slower memory because the faster stuff was prohibitively expensive. All that was on one order, and I paid for rush processing. I must express my displeasure with rush processing -- it didn't speed up my order at all. They didn't reimburse me the rush-processing charge, on the notion that they shipped the same day I ordered, when in actuality they only got out the information to the carrier the same day (it was around 2300, 11:00 P.M.). The carrier didn't actually get the package until the next afternoon.

If you've ever built a computer, you may have noted that the pieces that I have bought to this point don't form a complete system. I decided to buy neither an optical drive, nor a video card. My reasoning was that a server doesn't really need these things as it is primarily accessed over the network. I also had two optical drives in my older desktop computer, one of which could be transferred to the server. For the time before I returned to school, I was just going to borrow an optical drive and the video card from my mom's (aging) desktop. The day after placing my initial order (the one for the processor, motherboard, and memory), I decided to order a 750-GB hard drive so that I could have an operating system up and running. I now had two of these drives (the second was back in my dorm), which were made by different companies to reduce the chance of simultaneous failure. I just needed a third to have a RAID-5 setup.

Assembly

My two orders arrived on the same day, and I set out building my first home-built computer. I first put the power supply into the case, which was a no-brainer -- just screw it in. Next, according to the directions that came with the processor, I was supposed to install the processor and heat sink onto the motherboard. I was surprised that the processor didn't have any pins. It had flat contact points, which are called "lands" -- thus, why the socket type is called LGA: Land Grid Array. With this setup, the protruding contact is part of the motherboard. After I had inserted the processor, another decision came up. I had to decide whether to use the thermal interface material that was pre-applied to the stock heat sink, or to use my premium Arctic Silver 5 that I had left over from my when I upgraded my Alienware notebook's processor. After some brief Internet research, I decided to go with the Arctic Silver 5. I used some alcohol to get rid of the stock thermal compound, and applied the Arctic Silver 5. Next, I snapped the heat sink onto the motherboard. This was the most nerve-wracking part of the whole process -- when I pressed down on the clips, the entire motherboard bent terribly from the stress.

The next thing to do was to install the motherboard in the case. There were several stand-offs designed to screw into the case, and the motherboard into them. I came across a minor snag here (for which the internet gave me no solutions). Two of the stand-offs were slightly different from the others -- most of them had a flat top, but two had a pointy top. It turns out that the pointy-topped ones serve to help line up the rest of the stand-offs with the holes in the motherboard -- the pointy ones sink into the holes slightly such that having two of them provides rotational momentum for the whole motherboard. My recommedation for these pointy stand-offs is simply to make sure they are relatively far apart from one another. After getting the motherboard lined up, the task of screwing it in remained. This was rather simple (tightining screws can't get that complicated). After the motherboard was in, I installed the memory, which was as simple as pushing until it clicked. I proceded to connect all the connectors from my case -- such as power and audio among others -- to the motherboard.

Next, came time to connect the power supply to the motherboard. There were two points where I thought I had an unusable power supply; the first was when I realized my power supply had a 20-pin connector and the motherboard had a 24-pin connector. Thankfully, the 20-pin fits, leaving 4 pins without a connection. There was also a separate 4-pin connector that went to the motherboard. The second time I thought I had a bad power supply was when I plugged in the system, flipped the power switch, and nothing happened -- thankfully, it was a silly mistake on my part; I never pushed the regular power button on the front of the case. I installed my hard drive with ease due to the tool-less design of the case. I also temporarily installed the borrowed optical drive and video card, also with ease.

Booting

Now came the moment of truth (it was also around 0300 or 3:00 A.M. by this time). I inserted my 64-bit Fedora 8 live DVD, and watched the system boot. I was ecstatic! The system booted perfectly with no glitches, whatsoever! I may sound over-excited here, but with every one of my systems (all notebook computers, granted), it took some labor to get Fedora to work properly. Everything worked seamlessly. I immediately installed Fedora to the hard drive so that I would have a fast-booting system and downloaded the updates. The next thing I did was run SpinRite on the drive to make sure it was in decent shape. Since it takes many hours to do its thing, and because it was getting late, I went to bed at this point.

Afterthoughts

One thing I really like about my case is its tool-less design. After the initial install, all upgrades (excluding a motherboard upgrade) are tool-less. Expansion cards can be swapped out thanks to a clever latching mechanism, hard drives and optical drives can be swapped out by simply sliding them in until they click, and the case opens with thumb-screws. Of course I showed off my build to my family (including aunt, uncle, and cousins) in addition to my best friend. People seemed most impressed with the tool-less design of the case.

I still need to purchase the third 750-GB disk to complete the RAID-5 configuration, and will probably do so when there is a good deal on NewEgg for one made by a third manufacturer. The grand total for the build comes out to just under $1200.

I would say that building my own computer from scratch was a very good experience and would recommend for anyone to do it himself for his next computer. The exception is if one is looking strictly bottom-end. These are the only computers that are a better deal if you get them from some place such as Dell or Wal-Mart.

Labels: , , , ,

Monday, January 28, 2008

The Dvorak Keyboard Layout

In the final week of Christmas vacation while I was waiting for the pieces of my server (about which I shall soon write) to be shipped to me, I happened to come across the Dvorak keyboard. This was not the first time I had heard of it -- I had previously seen mention of it in some Wikipedia user pages, but dismissed it as irrelevant at the time.

At any rate, somehow, I came across the Wikipedia Dvorak article. I found it intriguing and decided to look further into it. I imagine that the reader will have never heard of the Dvorak layout, so I will give a brief description. The Dvorak keyboard layout is an alternative to qwerty. The keys are laid out so as to minimize hand movement -- the most commonly used keys, including all of the vowels, are on the home row. Dvorak was designed for efficiency. DV Zine is a comic-style introduction to Dvorak and its history, in addition to its use.

Now, theoretically, one can type faster an a Dvorak keyboard than on a qwerty, but I'm not too shabby at typing qwerty -- I can, when concentrating on 100% accuracy, type 62 words per minute. This switch was going to cost me some time, as well as serve to make each keystroke several times more expensive -- from instant messages to Google searches to blog posts (which, granted, I don't do very often). About an hour after I started the endeavour (before I had learned more than the home row), I decided to see how fast I could do on a typing test. I scored a blazing 6 words per minute. It was a couple of days before I had nearly memorized the new layout, by which time the pieces for my server came, and I was distracted from this endeavor.

It wasn't until I came back to school that I picked up the effort again. I have since been using Dvorak exclusively, and have been taking hand-written notes in class so as to be able to keep up, and to not fall back into using qwerty. About a week ago (the last time I booted into windows, to be exact), I re-tested my speed. This time I was up near 20 words per minute. I am certainly improving, and hopefully, I'll be up to my old typing speed so that I can declare this endeavor a success.

There have certainly been some struggles in learning Dvorak. Some of these follow in no particular order. First, now that I am programming again, I frequently press the wrong keys for curly braces, the equal sign, and other such keys. Second, I often use the command-line text editor, vi, which has the entire keyboard mapped to special commands. It is annoying, for example, when I mean to save and close the document, but mistakenly delete the current line. Third, for some reason when I tell Fedora to use Dvorak by default, the volume control buttons stop working on my ThinkPad. Finally comes just the expected pains of switching layouts -- making many typos trying to use the qwerty key locations instead of the Dvorak ones.

I cannot yet fully recommend the Dvorak layout, but I will say that it's definitely worth a look. Once I have fully mastered the layout, I may at that point fully endorse it, but not until that day.

The two sites I used in my initial training were dvorak.nl and ABCD: A Basic Course in Dvorak. (And, of course, I typed this entire post with the Dvorak keyboard.)

Labels: , , , , , ,

Tuesday, October 30, 2007

MATLAB R2007b on T61 with Vista

A week or so ago, I tried to install MATLAB R2007b. The program seemed to install without a hitch, but when I went to run it, the splash screen would pop up for a fraction of a second, then it would close, and the program would not be present in memory. I tried many things to get it to work, none of which were successful. The people at the computer help desk also had no idea how to get it to work. The good news is: I just figured it out.

The solution is to install MATLAB R2007b, then uninstall both Java 6 and Java SE Development Kit 6, restart the computer, then re-install them. This will usually require re-downloading the installation files.add an environment variable called "MATLAB_RESERVE_LO" with a value of "0" (zero). After doing that, MATLAB R2007b should run perfectly well.

I hope that someone finds this useful. The computer I'm running on is the Lenovo ThinkPad T61, issued by RPI.

Update (Oct 31, 2007, 01:23 EDT): Apparently my initial solution was a fluke, and only worked by some random chance for me. After I rebooted, it no longer worked. I found this new solution from a thread where someone else was having the same problem. Apparently, it affects "Centrino" processors, which I expect means that it affects Intel's mobile processors newer than, and including, the Pentium M. I would not be surprised if the problem also affected the desktop Core 2 Duo chips as well. One would think that they would catch these things during testing before they ship, since the setup is so common.

Update 2 (Oct 31, 2007, 01:39 EDT): MathWorks, the company behind MATLAB, has an official bug report and work-around. Unfortunately, you have to create an account to see it, but the same solution (though without an explanation) is provided both here, and in the thread I referenced earlier.

Labels: , ,

Friday, October 26, 2007

nVidia Quadro 140M

When trying to play a 720p video file on my ThinkPad this afternoon, I found out how bad the graphics card inside really is. It would not play the file well. It would play with a very low frame rate, and the sound was jittery because of trying to stay synced with the video.

I really wish that they had included a better video card (as well as higher screen resolution, i.e. 1920x1200). I haven't yet played any notable video games on my ThinkPad.

Labels: , , , ,

Tuesday, October 23, 2007

Hardware

Speakers

Ever since I have been up here at Rensselaer, I have not had a proper pair of speakers. I did not have the time, nor the space in the car to bring them when my dad drove me up here in August. All music that I have listened to has been via the speakers on my laptops, or through headphones. I should mention that the speakers on my Alienware notebook are much better than average for a notebook.

When my mom came up to visit for parents weekend, she brought my set of speakers that I had left at her house. It is amazing how good they sound after only hearing notebook speakers for a few months. They aren't even very powerful speakers; they're nothing compared to the speakers in my dad's home theatre system, for instance. (I think they're like 21 watt speakers.)

Alienware Notebook

Recently, my Alienware notebook has been running very hot -- I mean to the point where I was getting stability problems. It got so bad that I couldn't even watch an entire episode of a TV show without my system crashing.

I the first thing that came to mind was that I might have applied the thermal grease incorrectly or after I replaced my processor shortly before coming up to RPI. On Friday, I decided to take it apart. Everything looked good as far as I could tell. I decided that while the computer was open, I would clean it out.

Armed with a few cotton swabs (Q-tips), some isopropyl rubbing alcohol, and some canned air (complements of my aunt and uncle), I started cleaning out the area where the fan was. I was quite surprised at the large amount of dust that came out. I started up the computer again, and low and behold: it ran much cooler.

I decided that if there were any way to test it out, it would be to run a graphic-intensive game. This was the perfect excuse for me to buy Steam's Orange Box, which includes Half-Life 2: Episode 2. I played that for about an hour at full resolution (1920x1200), and almost full settings. There were no longer any stability issues with my machine. It will probably be a long time before I get a chance to actually play and finish the game.

Because of this experience, if anyone ever has stability issues with a notebook computer, I will first recommend that he take it apart, and get all of the dust out.

Connecting to RPI's Wireless Network from Fedora

One problem that plagued me for several months was that I couldn't get my Rensselaer-issued laptop (hereafter, "ThinkPad") to connect to the wireless network here. I first tried with the GUI network tools that come with Fedora, but there was not a way to do it that way (that I could find). My next approach was to use wpa_supplicant, and connect via 802.1X PEAP-GTC. I thought this was my solution for nearly a month, but never could figure out how to do it -- a fact I attribute to the lack of documentation for configuring wpa_supplicant.

One day, I decided to post on the Facebook "Wall" of the RPI network asking if anyone was able to get it working, as I know that many people here run Linux. A few days later, I got a reply suggesting that I try the Cisco VPN client for Linux. I tried to do this, but is couldn't compile a kernel module, or some other non-sense that was way over my head. After researching this problem, I came across the mention of a program called vpnc. There were clear instructions on how to take a Cisco client configuration file, and extract the information necessary to get vpnc to connect to the VPN. At Last, I finally was able to connect to the wireless network from Fedora! The solution was to use vpnc, if I didn't make that obvious.

In other news, in my experimentation with Fedora, I got the original Half-Life to run with the proprietary nVidia driver through WINE, a Windows emulator for Linux. I was not, however, able to get any of the other games working. One day when I have some time, I may look into this further.

Desktop Computer

My desktop is once again, nearly out of disk space. In reality I have around 120 gigabytes left, but it is not continuous; it is spread over 9 disk partitions, which is not very useful for moving and saving DVD images. I have many linux images, and other large files on my desktop (which is I am basically using as a server).

As a result of this free space being fragmented across many partitions, I have been wanting to build a RAID-5 server with several terabytes of storage in one continuous blob. The main thing precluding my from doing so at this time is funding. Additionally, I don't know which controller I would get. I need one that is reliable, fast, and cheap. (I know that the saying is usually "choose any 2".) I would end up getting some large disks from NewEgg. I would also need an inexpensive case to house the whole thing.

I would probably set it up as a Linux server, and make the space available to Windows clients via the samba protocol. I have never set up such a server before, so it would be very interesting.

Labels: , , , ,

Saturday, October 06, 2007

The One Reason to Hate Windows Vista

I decided this evening that I wanted to watch a movie. I went to the library, and checked out a DVD. When I tried to play it, I got the following error message:

DRM: Data Restrictions Management. The one and only reason to hate Vista. If I had tried to play the DVD on an XP machine, it would have worked fine. There is no reason this message should be coming up. I could be somewhat understanding if it were an HD movie, but it's just a standard DVD. This was one thing that I had been worried about through the development of Vista. It was and still is a concern for many other people.

Vista is definitely a huge improvement over XP. There have been several occasions where I have asked someone why they haven't switched to Vista yet, and their response is simply, "DRM."

Labels: ,

Thursday, September 27, 2007

Lenovo Updates

I've had my Lenovo ThinkPad T61 (6457A68) for just over a month now. In that time, many updates, both from Microsoft for Windows Vista, and from Lenovo for Lenovo-specific hardware, such as bios updates, and special buttons. I am impressed with the number of updates that Lenovo has been putting out, and am happy that they are (or so it seems to me) supporting their product well.

I am still running Windows Vista, but did have Fedora 7 installed at one point. At that time, I couldn't get the wireless or the fingerprint reader working. I am eagerly awaiting the release of Fedora 8 on 8 November 2007. Ubuntu 7.10 is going to be released in about three weeks, and I may try that in the mean time. I am currently downloading the beta, which was released earlier today.

Labels:

Tuesday, August 28, 2007

A More Difficult Second Day of Classes

Today was much more difficult for me than yesterday. First thing this morning, I had to get up at 5:00 for PT (Physical Training), then change into my white uniform to wear during the school day for ROTC. When wearing the uniform, we are required to carry our stuff in our left hand, and not on our backs. This is partially so that we will be able to salute senior officers and midshipmen as well as Air Force cadets.

My first class of the day was Introduction to Economics. It was a pretty good class, but it is going to require some work on my part. The professor said that the third edition of the text book would be sufficient, even though the current one is the fourth. I am going to return the new one I got from the library, and have ordered the third edition from eBay for $30 instead of over $100 for the new one. The subject matter of the economics class is somewhat interesting, but a lot of it seems like common sense. I am also happy that the professor is somewhat conservative rather than liberal.

Multi-variable calculus was slightly confusing, but I should be able to do fine in it. I don't have as good of a teacher as I did with Calculus 1 and 2, but I don't expect to ever have such a good teacher again, anyway. After hearing from my economics professor that the older version of the textbook was adequate, I decided to ask my calculus teacher if the older version of that book would also be adequate. She said that older versions would be fine since most of the questions aren't out of the book. I plan to return the books for this class and order the older versions for it also.

I have been enjoying being able to type my notes in class on my Rensselaer laptop. It has encouraged me to actually take notes -- something that I rarely, if ever, did in high school. The program that we were given for this task is Microsoft's OneNote. It is like a virtual notebook/filing cabinet with sections. It is quite easy to keep notes organized. Whenever I have taken notes on traditional paper with a pen, they would all get mixed up and I couldn't locate any of them. (I actually opened up my virtual notebook to refer to while writing this post; I have both laptops running side by side.)

My third class, and least favorite to this point, was Introduction to Engineering Analysis. I believe that the main reason for this is that the professor has forbidden the use of laptops in his classroom. The subject matter to this point (only the first day so far) has been physics, except that we have to use the English system of units, which I greatly despise for its complexity. We also have to hand in class work at the end of each class period in addition to homework. So far, this class seems to be the one that will be the most work.

Overall, the day was more difficult than yesterday, but I'd say that if this is as tough as it gets, I'll do fine.

Labels: , , , , ,

Monday, August 27, 2007

Start of Classes

This morning, I went to my first class, Computer Science 1. From everything that the professor said, I should probably take Computer Science 2 instead. Unfortuantely, when I tried to make it work with the classes I'm currently taking, it wouldn't. My ROTC drill period interferes with Computer Science 2, and ROTC will always come first since they are paying for my tuition. I'm going to see what I can work out with the schedule, and hopefully everything goes well.

The second class I attended today was a period where we would normally go over the previous lesson, so it was very short given that we haven't had any lessons yet.

My laptop is becoming more manageable as I customize it to my liking. I still haven't gotten around to removing all the suff slowing it down yet, though. Also, the RPI Scheduler java program doesn't work for some reason. I hope to get it sorted out soon, though.

Labels: , , , , ,

Sunday, August 26, 2007

End of Orientation

This has been an interesting two weeks. By far, the best part was the Adventure Quest at Silver Bay. Since returning from Silver Bay, life has been mostly uneventful.

Several days a week, movies are shown in an auditorium on campus. Tickets cost $2.50, but there were two free movies this week to whet our appetite for them (my reasoning there). The first one, Music and Lyrics was shown on Wednesday. If I had seen the first five minutes of it on television, I would have instantly changed the channel, but I sat through it, and it wasn't too bad of a movie. The second movie, Disturbia, was shown last night. I thought it was a pretty good movie, and kept you guessing until near the end.

Today, people on my floor finally got our Rensselaer laptops. It is a decent computer, but mine is faster. I still have the same gripes that I have mentioned previously. I plan to install Fedora on the Rensselaer laptop alongside Windows. One thing about the laptop that is better than was advertised, but not unexpected to me, is that it has Office 2007 Enterprise edition rather than Professional edition.

Later this afternoon, we had a "Convocation" ceremony where many of the important people of the college were introduced, and a few spoke. At the end, Rensselaer's a cappella group, The Rusty Pipes, sang the Alma Mater. I believe that I was one of very few freshmen who already knew it. I downloaded it a few months ago, and have heard it enough times to know it by now.

Classes start tomorrow, so we'll see how that goes. My first class is at 8:00 in the morning.

Labels: , , , , ,

Friday, July 20, 2007

Time

My how time flies! I only have three weeks left until I have to head off to RPI. I am no doubt excited about this, but there are some things that I wish to accomplish first.

Firstly, and probably most importantly, I want to finish off my work on the NHS web site. The work that remains to be done consists mostly of completing the system for updating the site via a web interface. I have done virtually no work on it so far this summer.

The next thing my queue of things to complete is a Beowulf cluster that my friend and I have been working on over the summer. We have been gathering older computers, and are attempting to get them to work together in parallel to perform computing-intensive tasks. We are doing it as mainly a proof-of-concept and to gain some additional experience.

Less importantly, but possibly unwisely high on my list, I am re-reading the first six Harry Potter books. As I type this, I am paused at the end of the fourteenth chapter of the third book, Harry Potter and the Prisoner of Azkaban. I am re-reading the first six books so that the story line will be fresh in my mind when the seventh and final book, Harry Potter and the Deathly Hallows comes out tomorrow. I have ordered a boxed set of the entire series in hardcover, but it won't arrive until October according to Amazon.

Getting back on topic, I have recently noticed that there is too little time. There are all of the things mentioned above that I want to do, and more, but time seems to be flying. It is already Friday, and it feels as if Monday were yesterday. I notice that I am probably about a quarter of the way through my life, supposing I live to be seventy-six years old. There are several other things to be done this summer. For one, I need to start getting in shape for next month when I will go up to Rensselaer for the ROTC program. I also want to, some time in the future, watch the entire series of Star Trek Voyager. I watched an episode of it the other day on television, and it reminded me of how good the show is. I have watched the entire series of the following shows: Stargate SG-1, Stargate Atlantis, 24, and Smallville.

Anyway, back to reading Harry Potter -- if I don't fall asleep first, that is.

Labels: , , , , , , ,

Monday, July 09, 2007

MP3 Quality vs. CD Quality

I was just ripping a CD to my computer when I decided to listen to the quality of the CD compared to the quality of the created MP3. I rip my CDs at 320 Kbps (Kilo bits per second), the highest that I can. Anyway, when I listened to them right after each other, I must say that MP3 sound quality is vastly inferior to CD sound quality. The CD sounded much better than did the MP3.

This concerns me quite a bit. I have been spending $20 per month on an eMusic subscription where I can download albums in MP3 format. (If you sign up using that link, I get some credit from eMusic.) I am surprised just how much better the CD sounds. I may have to re-think how I get my music. It may be very expensive to replace my music with the CD-quality version, as I have spent over $200 on the music I have obtained from eMusic.

Labels: , ,

Tuesday, July 03, 2007

Rensselaer Laptop

The specs for the laptop package that Rensselaer will be offering were released late last week. It is a very decent computer, though I do have a few complaints. The specs are as follows:

  • ThinkPad T61
  • Intel Core 2 Duo T7300 processor at 2.0 GHz (4 MB L2 cache, 800 MHz FSB, 64-bit CPU)
  • 2GB RAM
  • 15.4" WSXGA+ (1680x1050) TFT display
  • 160GB 5400RPM hard drive with Intel Turbo Memory hard drive cache
  • 128MB NVIDIA Quadra NVS 140M graphic processing unit
  • CD writer/DVD writer (dual layer)
  • 10/100/1000 on-board Ethernet and 56K modem
  • 802.11a/b/g/n integrated wireless
  • Ports: 3 USB 2.0, Docking/Port Replicator, External Display, Headphone / Line out, Microphone / Line in
  • PC Card Slot, ExpressCard Slot, Media Card Slot
  • UltraNav (touch pad/TrackPoint) pointing device
  • Fingerprint Reader
  • Bluetooth
  • Firewire (IEEE 1394)
  • 9-cell Lithium-ion battery (one-year warranty)

My main problem with the computer is that the resolution is not as high as I would like. It is 1680x1050, but I wish it were 1920x1200. Also, I would have preferred 256 MB of video memory rather than 128 MB. Finally, I would have preferred a faster (i.e. 7200 RPM) hard drive.

What this breaks down to is "I like everything about the RPI laptop package except where it is not as good as my current notebook computer." Based on that statement, I guess I will also mention that I wish it had 4 GB of memory rather than 2 GB. I will end up buying the package anyway because obtaining the required software legally would be prohibitively expensive.

Labels: , , , , ,