James Cassell's Blog

Sunday, November 16, 2008

Corrupted Vista Registry


About a two months ago, I had a problem with Windows. I got the following error: "Windows could not start because the following is missing or corrupt: \Windows\System32\config\SYSTEM" I went to the Help Desk at the VCC, and surprise, surprise, after several hours, they weren't able to fix the problem.

About a week later, solved the problem myself, and am documenting it for you here.


So, the solution is to boot into a recovery environment, and to copy the file at "C:\Windows\System32\config\RegBack\SYSTEM.OLD" to "C:\Windows\System32\config\SYSTEM", making sure to back up the old "C:\Windows\System32\config\SYSTEM" first, just in case. As far as "recovery environments" go, I just booted into Linux, though a Live CD, or even the Windows installation disc would work just as well.

This same problem happened to me about two weeks ago, and this same procedure saved my system again.

There is a Microsoft KB article that describes how one could solve the problem for Windows XP, but that wasn't much help for the same sort of problem on Vista.

Labels: , , ,

Monday, September 08, 2008

Never Let Windows XP Touch Your Partition Table

The other day, I decided to re-install XP. I have a triple-boot system; on my ThinkPad, I have Vista, XP, and Fedora. I told the XP installer to delete the partition that had my old install of XP, and when I told it to put a new one in its place, it told me that I already had four primary partitions.

My partition table was a follows: first primary partition: Vista; second primary partition: XP; third primary partition: boot partition for Fedora; fourth primary partition: extended partition which holds: 2 encrypted partitions for Fedora.

After the XP installer touched my partition table, the I could only boot into Vista. GParted saw my entire disk as "uninitialized," or basically, empty. At this point, I was in a slight panic; I had a lot of important stuff in my Fedora partitions.

My eventual solution was both tedious and dangerous. I basically edited the partition table by hand, using the command line tool sfdisk. I did this using the Fedora 9 Live CD. This time, I had gparted create an empty NTFS partition, and I told XP to just use that, and I let it format it when it asked, which turned out to be a mistake. This caused it to mess up my partitions again, and I had to use sfdisk to set them straight. I now have a working setup, as I had before re-installing XP.

The moral of this story happens to be the title of this post: Never let Windows XP touch your partition table.

Labels: , , , ,

Saturday, September 06, 2008

Broken Ctrl and Shift Keys

I have been having a very intermittent problem in Linux where my Ctrl and Shift keys would stop working. This prevented me from typing a question mark, as well as preventing me from entering my passwords when they were required. (All but my most insecure passwords require the use of the shift key.) Additionally, this breaks many, many keyboard shortcuts. I had noticed that this problem seemed to show itself whenever I used a program that captured the mouse and keyboard, such as a remote desktop application, or a virtual machine application.

Today, after having failed many times in the past, Google helped me find a solution that didn't require rebooting my machine (which was my only-known solution previously.) In a forum somewhere, someone said that fidgeting about with setxkbmap could sometimes help. It turns out that he was correct. If this happens to you, you can type, "setxkbmap dvorak; setxkbmap us" (without the quotes) into the command line. It worked very well for me, but your mileage may vary.

(Now, if only someone were to make a post like this whenever they solved an obscure computer problem. It would make Google's job much easier.)

Labels: , , ,

Tuesday, September 02, 2008

An Unexpected Adventure

This past Saturday, I woke around noon to the sound of my cell phone. Strangely, it wasn't a telemarketer calling to tell me that the non-existent warranty on my non-existent car was about to expire. One of my friends was having a computer problem, the likes of which I had never heard before. One thing that I have noticed semi-recently is that it is difficult to troubleshoot an unknown computer problem over the phone. (If it's something I've run into before, that's a different story.)

Technical Aspect

Not that it will interest the reader, but I'll describe the symptoms of the problem anyway. (Maybe someone who has a solution will post it in a comment.) Windows Vista would boot fine to the login screen. After typing the password was when the problems started appearing. The "Welcome" message would show for a few seconds, then, when the desktop should have appeared, only a royal blue background appeared. At this point, the mouse was functional (i.e., it moved around,) but there was nothing to click on. It seemed as if explorer had never started. All of the normal approaches to diagnose such a problem (e.g., Ctrl+Alt+Del, Ctrl+Alt+Esc, etc.) were useless. I asked on IRC, but no one had any solutions. Neither did Google. As a side note, it would boot into safe mode.

Eventually, we were able to get the desktop to come up by going into msconfig and disabling all of the startup items as well as all of the (non-essential) services (as defined by msconfig.) Upon re-enabling the services, we were able to get a functional desktop for about one boot, but when we rebooted, the initial problem re-appeared.

I didn't want to try the same solution again because, as Einstein said, it is insane to do the same thing over and over again and expect different results. My next suggestion would have been to get the computer re-imaged. We had been working on this problem for over five hours by this point, and I didn't want to send my friend away having wasted so much time. Since the Help Desk wouldn't be open until the following afternoon, I proposed another solution. Last year, I had taken a backup image of my computer the day that it was issued. I still had this backup, (that consisted of six DVDs,) and proposed that we do a restore from this image. We did so, followed by downloading all of the updates that had been released since. This second option took about six hours. The system was now in a pristine state.

Human Aspect

As can be inferred from the above, this ended up being an all-day event. Some may exclaim, "what a boring way to spend one's Saturday!" I look at it differently. In addition to the fact that "...we know that all things work together for good to them that love God..." (Romans 8:28, KJV), I can't think of a better way to spend a Saturday than getting to better know my friends. In case you know nothing about humans, people don't sit and stare blankly at one another for more than eleven hours, while waiting for a computer to do its thing. Another of my friends joined us about half-way through, and hung out until the end. I met both of these friends at Silver Bay, where, many will agree, the best times since heading off to college, have taken place. This opinion was voiced several times through the day.

While this day may have been a bad day for the victim of the computer problem, it was one of the best days that I have had since returning to Rensselaer. The only thing that I would change about the day is my allowing the conversation to be steered to my planned activity for the day: sleeping into the late afternoon. This caused my friend to feel bad for waking me, and, in turn, made me feel guilty for causing this bad feeling. This could become a vicious circle. Aside from that, I'd say that the day was an excellent unexpected adventure!

Labels: , , ,

Thursday, August 28, 2008

Beginning of Sophomore Year Classes

This semester, I am taking 23 credit-hours. An interesting thing is that they are all technical classes, which could turn out to be a bad thing, or a good think. I don't know yet. These are the classes I'm taking:

  • Introduction to Engineering Design
  • Embedded Control
  • Computer Organization
  • Computer Components and Operations
  • Data Structures and Algorithms
  • Navigation

Navigation is my Navy class, and I have a feeling that it will be the easiest Navy class that I will have the chance to take, given its technical nature. We actually have a civilian taking the class because that which is taught also can be applied in the civilian world. (Not that that isn't true for the other Navy classes; it is simply more obviously true for this class.) So far in this class, we have started with the "Rules of the Road," which is basically how to drive on the water.

Introduction to Engineering Design looks like it will require the most work out of me this semester. This is a "design" class, which means that everyone has to design and build something, which, in this case, happens to be a robot (for which we haven't received the requirements. There will be a project done on an individual basis as well as one that is done as a team, the latter of which will count for most of our grade. I found out the answer to a requirement oddity the first day of Introduction to Engineering Design: Professional Development 1 is part of the course. In the requirements for my major, "Professional Development III" was listed as a requirement, but I and II weren't.

My Data Structures and Algorithms teacher has a very heavy accent, and is quite difficult to understand. This will almost certainly be my most difficult class in terms of subject matter. From what others who have taken the class say, it requires many hours of work, and the concepts are somewhat difficult to fully grasp. This difficulty combined with my instructors heavy accent will probably make this class a difficult challenge.

One interesting thing that I noticed between the three other classes, Embedded Control, Computer Organization, and Computer Components and Operations, through yesterday, they were all teaching us the same material, in an attempt to get everyone to a common baseline. This material was, for the most part, the binary and hexadecimal number systems as well as a discussion of number systems in general. Having built a calculator from scratch as a high school freshman as well as my geek mentality, I already knew this material (as did many in the class, to an even greater extent than I.) The school administrator at the time told me that I was doing college-level work, and, low and behold, in one of these classes, we will be doing a project very similar to my winning high school science fair. This easy-going spurt ended abruptly for me today, as each of the classes started on new material, and diverged to cover material specific to that class.

In Embedded Control, we will be programming micro-controllers, and messing with electronic hardware. By the end of the semester, we will have automated things that range from RC cars to small blimps (which have been provided to Rensselaer by BAE Systems.)

Computer Components and Operations looks like it will have the most material with which I am already familiar, discussing how computers do what they do. I had explored this topic somewhat deeply during my high school years.

Computer Organization -- actually, I'm drawing a blank for any specifics of this one. I'm pretty sure that anything that was covered, I already knew, and dismissed as "no need to re-learn this." (Which reminds me of a "sea story" from the beginning of last semester, but I'll tell that another day, if someone asks me in person.)

Update: 1 Sep 2008 @ 1832 EDT (UTC -0400): Now that I have gone back to the class, I remember what it is. The professor has set up a Linux server for us to complete our assignments. The first topic that we are covering is an Introduction to Unix and C. Both of these I am familiar with to a certain degree, which is why I was drawing a blank earlier. (This strongly goes along with my aforementioned "sea story.")

Overall, this semester, no one class looks like it will be particularly hard; my only concern is that they will present a very large amount of work.

Labels: , , , , , ,

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.


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.


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.


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.


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.


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).


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.


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.


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.


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



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.


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


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: , , , , ,

Sunday, June 24, 2007

Resetting an iPod Nano that has Locked Up or Frozen

Microsoft software is notorious for locking up, crashing, or hanging. Today, I was going to add some music to my brother's iPod Nano when the screen froze. I tried plugging it in several times, and Windows said that the device had malfunctioned, and should be replaced.

Obviously, replacing the iPod was out of the question, as my brother had won it as a prize. I searched Google for a solution, and eventually found one around the fiftieth result. I found instructions to reset a broken iPod. The site didn't mention the Nano, but the instructions for the others did work.

Here is how I did it:

  1. Make sure the hold switch is in the off position
  2. Move the hold switch to the on position, then back off
  3. Press and hold both the "MENU" button and the center select button together for 6 to 10 seconds until you see the Apple logo
  4. Turn the iPod back on
  5. Enjoy the no-longer-hanging iPod Nano

Many people think of Apple and everything they make as perfect, but as evidenced by my experience with the iPod Nano hanging, and similar experiences of others, even Apple products are imperfect, and malfunction.

Labels: , , ,

Thursday, December 07, 2006

Windows Vista RTM

I've been running the final version of Windows Vista for almost a month. It is very nice, and a much-needed improvement over Windows XP. It does require good hardware to run smoothly. The sweet spot for ram for Vista seems to be about 2 gigabytes. A DirectX 9.0 card is also a must. Just about any modern processor except the Celeron will work fine for Vista, though I would recommend dual-core. It seems to be as stable as or more stable than XP. I have been up and running for 10 days and 12 hours as I type this. Some software doesn't work with Vista yet, but vendors are working on that, and most stuff should work by the time it's released to consumers in January.


Saturday, October 07, 2006

Windows Vista RC1

I've been testing RC1 of Microsoft's upcoming Windows Vista. The user interface has been updated to take advantage of graphics capabilities with the new Aero interface. The new version has more than that, however, it has a new integrated search into the start menu. The search tool shows results as you type.

Vista seems to be pretty reliable. I've only had it crash once or twice since I've been running it. My favorite feature since I don't have very much RAM is the ReadyBoost technology. It allows you to plug in a USB flash drive to extend the memory of the system. Flash is faster than a hard disk, but slower than RAM. ReadyBoost noticeably increases the speed of the system.

I am about to install RC2 of Vista. It was released yesterday, and I've been downloading it for the past few hours. Hopefully it will have many performance tweaks.


Sunday, September 17, 2006

Life Since School Started

Well, school has started, and I have been going to my classes at NOVA and Germanna. My schedule worked out pretty nicely. My school has block scheduling. There are four blocks in the day, each lasting 85 minutes. Some classes are a semester long, and other classes are year-long. The year-long classes meet every other day. The days are divided up into X-days and Y-days. On X-days, I have Dual Enrollment English first block and AP Statistics second block. On Y-days, I have my internship with the Technology Department of the school system. I have Introduction to Engineering third block, and I have Principles of Technology fourth block every day for the first semester. After school, I have Cross Country practice. I then have Physics or Calculus in the evenings, depending on the day.

My internship is going well, and as far as I can tell, I'm doing a good job. Since school started, my job has changed slightly from doing some large task to helping people out with their individual computer problems. I have been able to fix most of the problems I have come across.

Cross Country is fun as always, but unfortunately I'm not as fast as I was last year. This is because I had been working in the last few weeks of summer, and didn't go to the practices that were held, as I had done last summer. As an example, yesterday, I ran 9:22 in a race that I ran in 9 minutes flat last year. I hope that I can work up to where I was last year. I'm considering doing winter track, and not swimming because I don't want to have to start all over when spring track comes around.

I have begun work on a web site for my school's National Honor Society. I bought two domains: mvnhs.us and mvnhs.net, as .com and .org were already taken. For now, I'm using the design of my site, as I don't yet have one for the NHS site. This will be my first web site for an organization, and I hope that they will like it, and use it, even after I am graduated and gone from the school. I'm going to try a CSS-powered pop-up navigation implementation developed by Steve Gibson, author of SpinRite software. It does work in Internet Explorer; something that few or no other CSS menus do. The current NHS design is destroyed by Internet Explorer, but that will have to be fixed, as it is the prominent browser.

Labels: , , , , ,

Sunday, July 16, 2006

NYLF/tech Day 8 (evening)

My group's Future Solutions project didn't make it to the finals. One group's in my Tech Talk did make it to finals, but the final winner hasn't yet been announced. They finally opened up the Network Security Challenge Lab, and I finished all the challenges. At one point I was third on the list, but I sank as people with bonus points were higher on it than I was. I did have a lot of assistance on one challenge called Tantalus. It took some work on my part also, but I eventually solved it.

When we were in Tech Talk this evening, my FA (Faculty Advisor) told us that there will be no more NYLF/tech. He said that it was because the enrollment shrank. Last year, they had 1800 students, and this year, they only had 1200. They wish the enrollment to rise each year. My FA says that he doesn't think they will ever have a NYLF/tech forum again. It makes me sad because I would really enjoy coming back and doing it again as an alumnus. The idea was put out to start a petition to have NYLF/tech again, but its success is very doubtful. :(


NYLF/tech Day 8

I go home tomorrow. It is sad, but I have had a generally good week. I went to several seminars, and listened to speeches by people who work in the technology industry. Meal times have been the only free time, but there is always at least an hour for every meal. During my free time, I have been doing challenges in the Network Security Challenge Lab. The computers have a version of Ubuntu, a variation of Linux. I have almost no experience with Linux except for doing SSH to my web server. I have learned much that I didn't know about Linux, and even made it onto the "Wall of Fame" which shows the top 15 people in terms of score. I would be in that lab right now, except that they aren't allowing anyone to enter. I hope they open it again because there are a few challenges that I haven't figured out yet. I have been working on them for several days.

My group has been working on a Future Solutions project over the week, which consisted of taking a problem and attempting to solve it with technology. My group was initially split between Airport Security and Voting. When we took a vote, Airport Security won, but I and another teammate convinced the others to go with Voting. We came up with a solution that involved using touch screen terminals for people to vote on, and a thumbprint scanner to identify that no one votes twice. We had several servers, and a central server that published the election results on the web. We just finished presenting to the judges, but won't find out if we made it into finals until 1:30 or 2:00 this afternoon. Right now, I am attempting to entertain myself with my laptop plugged in right outside of the Network Security Challenge Lab. I'm wishing that they would open it up so that I can work on the challenges. I'll try to, if I have time post if my group made it into the finals.


Sunday, July 09, 2006

NYLF/tech Day 1

Today, I am in San Jose, California, known by some to be capital of Silicon Valley. I am here for the National Youth Leadership Forum on Technology. It is explained best on the NYLF/tech website, but I will try to briefly explain it here. Basically, it is a Forum where students come to learn about technology, and meet industry leaders. There was a pre-registration for which sites we wanted to visit and other things, and it was on a first-come first-served basis. I was there the moment it opened, but they sent me the wrong password in the email, and I didn't get to register until today, and most of the things were full. So far, I have met my roommate, and may have another who hasn't shown up yet. We are at the Fairmont Hotel in San Jose. I slept for about an hour or so in my room, and missed some of the afternoon's events such as the University Fair, and the Curriculum Review. I hope those weren't too important, though I was told that I should attend the Curriculum Review.


Tuesday, May 09, 2006


I have been messing around with Drupal, an open-source CMS (content management system). I heard about it from a classmate when he asked me if I'd heard of it. I hadn't, and thought nothing of it for a couple of weeks. I came across its mention on the web, and decided to look at it. It appears to be the solution to many problems. I have been developing my own thing like this for my website, but Drupal is far superior, having hundreds of contributors. I am going to use it with my redesign of my school's website because it will allow someone who is not proficient in HTML to author pages with very limited HTML. This blog will eventually be converted to being published with Drupal.


Thursday, April 27, 2006

Spyware Safety Quiz

Rating: Safety Guru

"You laugh in the face of spyware and adware. Your practically clairvoyant knowledge of the Web allows you to distinguish between safe sites and those that pose potential danger. (We suspect that you may also know which soda machines might steal your money before you drop a quarter.) Our hats off to you."

Take the quiz yourself.


Wednesday, April 26, 2006

My version of my schools website is now 100% valid code. The only thing left to be done is to decide what to do with the content that was the marquee. At the moment, it is just a list in a <div> called "news". I'll figure something to do with it.

I need to get to writing my paper that is due tomorrow.


Sunday, April 16, 2006

My version of my school's website is now 90% valid markup, and is about half the size of the original. All the original information is still there, though. It gets 9 validation errors with the marquee commented out. The original got 171 errors as HTML 4.01 Strict. Now, I need to make it completely validate, then make a new style sheet.


Tuesday, April 11, 2006

I have been messing with a copy of my school's website on my server. I have been attempting to make the current invalid markup and the use of tables so that it adheres to web standards, and uses semantic markup. I'm editing the current Mountain View web site on my own server. I have no authorization to be doing this, but may ask if the school wants to use my design if I come up with a good one.

edit: 4-15-06
My version of my school's website is now 90% valid markup, and is about half the size of the original. All the original information is still there, though. It gets 9 validation errors with the marquee commented out. The original got 171 errors as HTML 4.01 Strict. Now, I need to make it completely validate, then make a new style sheet.


Wednesday, November 12, 2003

New Operating System

I am now running Windows XP Professional. Someone gave it to me after he bought it and decided that they didn't like it. He also gave me a 14 GB hard drive. I downloaded and installed Red Hat Linux 9. I don't like it very much. A good thing about it is that you can make PDF files on it.