The Magic of Computers

September 28, 2008

I had some plans that were cancelled today so I found myself with some extra time, and decided to write about something that was on my mind a day ago.

When I think of magic I don’t typically think of computers. They are rather finite machines that can only do an assigned task. However, it was my initial enchantment with computers that led me in to the major I am in. Wondering exactly how a window was opened, wondering how the computer booted, wondering how to install software, etc. This is the stuff that kept me wanting more which brought me deeper in to the world of computers.

I find that as I move further in the computer science world, and in my experience as a coder, some of the magic gets lost amongst the code and the understanding of how things work. I no longer find it impressive when I compile my code and run it from a terminal. No longer do I stare at a scene in a video game and wonder how everything fits together. I can assemble and repair a computer and it doesn’t seem terribly difficult or nerve racking.

I started thinking about these things a day ago when I had to recompile my kernel to add support for an old floppy drive. For some reason it brought back memories of when I first compiled the Linux kernel (yay Gentoo Linux ^_^). I got such a sense of accomplishment out of watching my computer boot from the configuration I just devised out. That magic has been lost on me because since then as I recompile the kernel as if nothing is special about it. Even more than that I did it through several ssh tunnels I had configured to allow me off campus access to my dorm room computer. I gave none of this even a second thought I just knew it was what I had to do. The magic of all those things has been lost. I’m sure anyone who was around me when I learned about ssh, or more recently the -D, -L, and -R flags could have told you I was like a kid in a candy store. Absolutely enchanted by the assortment of options I had just been given, and never content just trying one particular flavour or style. I desired to know the ins and outs of ssh and every additional piece of information was as awesome as the last.

Why do I write all of this? Well, during my pondering I couldn’t help but wonder what would happen if I understood so much that I never found magic in computers. Even though certain aspects of computing no longer excite me the way it used to I know there are many more areas that are littered with things for me to explore. I remember reading an interview with one of the Gentoo devs on gentoo.org. He was saying that now that he works on all this essential tools he longer sees the magic in computers. I don’t think he was particularly bothered by this, but it struck me as sort of a sad thing. I LOVE discovering new commands and gaining knowledge about computers. It is one of the things that keeps me coming back for more. I often feel that there is no way I could ever learn everything about computers (or come close), and I sincerely hope that is true.

I always enjoy seeing a new CS student delight in some of the awesome things you can do with ssh, or to see their excitement in finally getting a tricky program to just compile (let alone run). It reminds me much of myself, and I think it is those sorts of people that will be most fulfilled in jobs as computer scienctists, but also the people that will require the most fulfillment out of their job to continually enjoy working somewhere. With any luck I hope to find that in a job, but I don’t expect I will land a programmers dream job straight out of college either.

I suppose only time will tell, as they say πŸ™‚ .


Research Paper Citations

September 15, 2008

So, to deviate from my normal theme of computer related articles I thought I would write about something thatΒ  I ponder quite often. That is the issue of citing sources within a paper. Typically this comes up the most within a research paper, but certainly citations can be used in papers of all types. What exactly do I ponder? Well… I wonder why the world of citations is so difficult.

Let me take some time now to point something out before I go in to the rest of the this post. I think that it is of the highest importance that sources be cited in a paper. There are many reasons sources should be cited. I 100% believe that students and professional researchers alike should be completely honest about where they got all of their information from! Please keep this in mind as you read the rest of the post, or I know I will get comments of the form “So you don’t think you should give credit to the original authors !?!?”. That is NOT what I am saying πŸ™‚ .

So, back to the main topic here. I think that it is too challenging to put citations in to a paper. There is nothing intuitive about it. Arguably the task is not hard, but it IS quite time consuming. I know there are websites and programs that will automatically cite things for you, but alas this does not always satisfy the stubborn professor that insists every period must be in exactly the correct spot. I, personally, am a huge fan of LaTeX and the citation package known as BibTeX. It does a fabulous job of keeping track of your in-text citations as well as your references page at the end.

First of all lets consider how many different ways there are to simply formats ones citations. Off the top of my head I can think of: MLA, Chicago, and APA. That is only the tip of the iceberg though. Enjoy this great Wikipedia article which lists quite a few other styles of citation. Why do we need so many different ways to cite things? I see no compelling reason. Basically when you cite a piece of information you are trying to indicate where you found the information, and who the original author/creator of the work was. Now, to help someone else find the same information might involve several parts. The point here is that there are really only two “simple” things that citations are meant to accomplish it doesn’t seem like there is a worthwhile need to have a boatload of other styles.

My second point of consideration is that teachers need not be so strict about dealing with a poorly formatted citation. I have lost the difference of a + or – part of a letter grade in the past just because a period or comma was out of place. No surprise there… the styles are so complex to follow, and so seemingly random at times that it is quite easy to miss silly things like that. Ultimately I don’t believe I have ever failed to indicate where I got my information from and the author of the information. Therefore why should I be deducted points? It is not as though missing a period or comma in the list of sources at all effects the previous content of my paper. Perhaps my teachers are just looking for arbitrary criteria to grade on? I suppose I will never know.

This then brings me to my third issue with citations. Why are they so insanely long winded? You need to practically buy a separate book to be able to cite things in the MLA properly! That is insane! Let us not forget that the point here is indicating where the information came from.

So what do I propose? Well first of all I think we need ONE and only ONE form of paper citations, peroid! Secondly, this form of citation should be able to adapt easily to new forms of media, but not be overly complex such that you need an entire manual just to cite things properly. Finally, my third point, is that professors and teachers should not be so strict about making sure every last peroid is in place. IT DOESN’T MATTER. If the student has shown where everything came from in a decent looking manner there should be no fuss! Concentrate on what they actually wrote, and not how well they can follow an over specified format πŸ™‚ . After all, we already have a discipline where people follow overly specified formats, computer science πŸ˜‰ .

If anything, switching to this sort of system would make it easier for everyone. Easier for people who need to cite sources because there would just be a single format to learn. Also it would be easier for people who are reading any material with citations because it would be uniform across the board πŸ™‚ .


Back to C++

September 10, 2008

It has been a while since I have had the time to sit down and write something here so I figured now is as good a time as any. I actually have class in a bit, but I figured I would be able to get something down of mild interest before I leave.

As one of my final computer science classes before I graduate I am taking a class based largely in theory. Mainly we will be studying NP-Complete problems, but we will study some other topics as well, which I may blog about when the time arrives. Until a few days ago we did not actually have any homework assignments which involved programming 😦 .

The assignment we did get, though, was pretty interesting. The basic idea behind it is that you must take the string 123456789 and insert +’s, -‘s, or nothing in between digits. Also, for our class, you could also place a – or + sign in front as well (though the + doesn’t really do anything) . You must generate all possible combinations of this string and find the smallest possible positive integer that you can create in this way. This required us to implement an algorithm (which we learned in class) that can be used to generate all possible combinations of some arbitrary set (i.e. the power set). We were allowed to write this program in any language of our choosing. I joked around saying I would try and write it in MIPS assembly or LISP. I did seriously consider LISP, but I lacked the ambition to relearn it. In the end I decided to write this in C++.

My design of the problem wasn’t anything noteworthy, and that is not really the point of my writing this post. I simply really enjoyed writing C++ code again. It took me a little bit to get back in to the spirit of things, but once I remembered the little syntax quirks and general coding style I was loving every minute of it. This program did not take all that much time to program, nor was it particularly challenging. Perhaps I just have a sentimental feelings for C++ as it was always a language I had aspired to learn since I started programming in the 8th grade. I was extremely pleased that my college offered it as a course. Sadly, the intro level classes are now taught in Python, which I have mixed feelings about. I’m not sure if a language will come along that I will ever like more than C++, but who knows what is on the horizon.

C++ just seems to be the best combination of two worlds of programming that I enjoy. The low level access to memory, variables, other reasources of C, and with support for OO style programming. I know some would argue those should never be combined. For me I just like knowing that if I need to access the low level stuff it is readily available, and that I do not have to jump through hoops to use it. With an OO language I know that you are typically trying to write high level code, and I would say that is true for me most of the time. However, access to pointers can really come in handy in certain circumstances. Yes, I know there are workarounds for other languages, but it is convient to have them right at your finger tips.

Perhaps I am just holding on to my past, but I sure do enjoy coding in C++ πŸ™‚ .