I wrote a paper on object oriented programming (OOP) for my OOP class last term. Since finals are long over and grades are in, I'm posting my paper on the web for all to read. If you are interested, give it a read. I would love some feedback.
I tried to write the paper for someone who is familiar with programming, but wants to understand OOP concepts. The paper is 9.5 pages, but it's quite conversational, so it should be a quick read.
Today is the first day of the spring term. It's shaping up to be a good one. Once again, I'm a TA for Dr. Budd. This time I'll be helping out with CS 162, Introduction to Computer Science II. This will be very a different TA experience than last quarter in CS 480 (Translators).
I'm also going to be working with Dr. Metoyer on end-user programming of character behavior for a immersive football simulation tool he is developing. I'm excited to get my first real research job. I already did quite a bit of reading last term, so this term I get to make stuff. I like making stuff.... :-D
When I'm not busy with work, I'll be working on my two classes, CS 552, Computer Animation, and CS 589, Human-Computer Interaction. Animation facinates me, although my own experience is limited to simple video games and using Maya. I'm excited about the HCI class because I don't know anything formal about HCI, I just have intuative ideas I've picked up over the years.
It looks like it will be a great, busy quarter.
There's something satisfying about cleaning up your hard drive. Today I rooted through my hard drive and got rid of old files, unneeded downloads, and digital cruft. As the reward for my labor: 850 fresh megabytes, free for the filling.
I like getting rid of stuff. Really, I do. It's liberating. That's why I was quite disturbed when I got in this evening and discovered those 850 MBs were gone! Where did they go? They just disappeared! Fortunately, I had du, ls, and grep on my side.
After lots of typing, I discovered ".xsession-errors" in my home directory. It had grown to a mere 1.2 GB! Woa! Thanks to a bug in nautilus's thumbnail generation involving an infinite loop and "fprintf" statements, I had lots of junk filling up my harddrive. Simply deleting the file didn't cut it because 9 different programs had the file open. After logging out of gnome and logging back in, 1.2 GB magically reappeared. Phew. I had my free space back.
I really need to upgrade my home computer. I have a very old version of gnome and I'd much prefer to have something more current. It's time to put Gentoo on my desktop machine. Now, all I have to do is find the time.
Happy birthday Joel! You are one of my two favorite brother-in-laws. It's been a pleasure getting to know you better, and I look forward to spending lots of time hanging out in years to come.
As you can probably tell, I've spent most of my spring break avoiding the computer. I've spent some time playing Gamecube and guitar, but I've spent most of my time running around Northern Oregon. All-in-all, it's been relaxing and fun.
I dropped my mom off at the airport yesterday. She was here for a week and it was great to have her visit. She, of course, was happy to see us and thrilled to see Emily. Wednesday evening, on the eve of her return flight, we went out to eat at the McCormick & Schmick's Harborside Restaurant. Unbelievable food, reasonable prices. I would highly recommend it to just about anyone. Alaska Airlines gave us a $20 gift certificate when we flew down to California for Christmas. I wasn't familiar with the restaurant, so I thought it would be fun to try out. Boy am I glad we did.
Now I only have a few days to tear myself from spring break and get ready for school. I'm not sure if I'm a fan of the quarter system. It seems the school year should be over by now. Fortunately, there are some really fun classes scheduled this next term. It seems the faculty schedules the really fun stuff in Spring to make up for the long school year. We'll, I'm off into the next term. I look forward to telling you about it.
Friday at 2:00 PM, as I was walking back to my car, I was filled with a sense of exuberence and freedom. I had just participated in a "Thinking Aloud" study for analyzing the usefulness of aspect oriented programming. With that done, all of my commitments for Winter term were complete! The sun was shining. The flowers were in full bloom. The weather was gorgeous. The world stood still for a moment to give me a breath of carefree fulfillment. Ahhhh....
Since then, it's been a blur. Later that evening, I picked up my Mom at the airport. We went to the coast yesterday. We went to church and cruised around Corvallis today. We've had lots of catching up and hanging out.
This afternoon I found the "Sunday nap" I lost about 8 weeks ago. Maybe tomorrow I'll remember what it's like to sleep in. Probably not, Emily likes waking up at 6:40. Is it midnight already? It is? Where does the time go?
I was hoping to be done with my object oriented programming report today. Well, I'm not done yet, but I will be tomorrow. I'm excited that the term is almost over. It's great to have that sense of completion. I've finished two terms of grad school and I'm going on a third. Oh, the things I've learned!
Only two-and-a-half pages of writing stand between me and the finish line. I'm almost done. I'll see you on the other side.
The end of winter term is wrapping up nicely. I've finished all my work for my graphics class and all my grading for my TA class. Now all I have left is to write a report on object oriented programming. Writing it should be both interesting and fun.
Lisa and I are gearing up for lots of company. This Friday, my mom is arriving to visit. She's staying until Thursday, the 25th. On Saturday, the 27th, Brooke and Ryan Heasty (my cousin and her husband) are stopping by on their way up the coast. On April 2, Lisa's family arrives for a two week visit. On April 4, we're inviting family and friends over to celebrate Emily's 1st birthday. It will be great to see people we haven't been able to see in a while. There will be lots to do with little time.
So, if you don't find yourself on this list of visitors, we would love to see you when you get a chance to take some vacation. Spring has arrived, so it's just beautiful up here. It's a great time to visit. We'd love to have you over.
The winter term is wrapping up, so I've been extremely busy between writing two reports, participating in a workship, writing my volume rendering software, and grading programs for CS 480. There's lots to do and I'm still not done!
Recently Lisa and I have been busy looking for a home up here where we can live while I finish out my Ph.D. It's amazing to see the price difference between real estate in Southern California and here. Prices here seem much more reasonable even though Corvallis is one of the most expensive places to live in Oregon. I'm not sure how people afford to live in Southern California, and I was just recently a resident.
Emily has been as active as ever. She is tearing around the house on all fours. Now that she's pulling herself up on things she's finding a whole new world of opportunity a few feet from the ground. She's recently discovered if she crawls over to Lisa or me, pulls herself up, and taps her hands on our legs, we'll pick her up eventially. This is very cute and irresistible--except when I'm trying to work.
After writing a paper on volume rendering for CS 551, I decided to do volume rendering via ray casting for my final project. You can check out some cool animations and snapshots I rendered. Also, if you want to brush up on volume rendering, you can see my presentation.
rm -f /usr/portage/distfiles/*
So that's where all the space went! I had about 500 MB tied up by the downloaded files. My dad tells me Gentoo keeps these around so you only have to download a patch for upgrades. I'll have to keep a closer eye on this directory in the future. Now I have more space to compile stuff. :-)
I installed the Linux Userland Filesystem (LUFS) on my new Gentoo box today. Might I add, it was done with great ease. I'm mounting space from my main computer's uber-disk drive so I can do video processing on the Gentoo box. It's slow, but Gentoo made it easy to install transcode with all the modules I need. So far I have had none of the wacky permissions issues I experienced when trying to connect to Solaris. Linux to Linux connectivity seems to work just fine. +1 for LUFS on Linux. +1 for Gentoo and transcode.
I've posted quite a bit about Gentoo last week, but I never really summarized. I may have focused too much on my difficulties with Gentoo. All-in-all, I'm very impressed with Gentoo. Sure, the install is a bear, and I wouldn't recommend it to anyone who is not serious about Linux, but I love the flexibility. Ironically, the source of my greatest difficulty was the kernel configuration, so maybe I should just blame Linux. (Have I mentioned I hate compiling the Linux kernel? Well, I do.)
As a result of my experience thus far, I would like to see some things improved in Gentoo. There should be better integration for binary packages in the portage tree. Why not incorporate them right in? One should be able to use the source or binary for any package. "emerge" should have better support for uninstalling with dependancies. "clean" and "depclean" just don't cut it. Finally, regardless of the install stage chosen, one should have the option using a generic, pre-rolled kernel. It's nice to be able to get the system up and working and worry about the kernel later.
If I had more time, I would jump in and contribute. I like Gentoo's philosophy. I don't have the time, so I feel like one of those critics that just sits around complaining about the current state without pitching in to make things better. Hopeful I can make a difference in the future.
I have never seen as many daffodils than I have seen here in Corvallis. They're everywhere. Most every yard has them somewhere. One might think they grow wild. What a beautiful flower sitting there smiling at you and the sunshine. They brighten up my day when I'm walking to class. Maybe you should get some daffodils and brighten up yours.
Java programmers be warned. Those ".class" files are not as flexible as you think.
When grading the programs for the compilers class, I ran across an interesting problem. The student's program was throwing an "IncompatibleClassChangeError". I thought it unacceptable for the program to throw an uncaught exception, so I deducted some points. Shortly after I emailed out the grade report, the student emailed me saying the program was not throwing any exceptions on his machine. After emailing back and forth, we ended up sitting down at the same computer to figure out what was going on.
The students in CS 480 were given a suite of ".java" files that provide a basis for their program. They were to only modify "SymbolTable.java" and "Parser.java" to complete the functionality. The exception was being thrown in "ClassType.java", a file the student had not modified. Even more perplexing, the "ClassType.class" file generated in the student's home directory was different than the "ClassType.class" file generated in Dr. Budd's directory--even though the "ClassType.java" files were identical!
After much frustration and "diff"ing, we finally figured out the student had changed "SymbolTable" from an interface to a class. "ClassType" contained a reference to "SymbolTable" as one of its data members. The byte code generated for a reference to an interface is different than a reference to a class, even though they are linguistically interchangeable. Although you can change an interface to a class and all your code will compile just fine, the byte code generated will be different. This means that if you write a library and you promote an interface to a class, you cannot use the old ".class" files to compile against library. Even worse, compiling against the old ".class" files will succeed, but running the program will cause run-time exceptions. Why doesn't the compiler check for this?
I find problem very interesting because in Java, a variable of an interface type is a replacement for a variable of the class type and visa-versa. (Yes, yes, so long as you are only calling methods that exists in both the interface and the class.) Essentially, the two are substitutes for each other. That might lead one to believe that it will be the same in the byte code. Well, it's not. Be warned!
Congratulations to Nate and Sara Jones and Melissa Kadera for running and completing the LA Marathon! They have been training hard, and today it paid off. They are not simply marathon participants, but marathon finishers. What a great test of training discipline and physical stamina. Good job! I'm proud to call you friends.
Check out Nate's blog and Melissa's blog for more information.
In my continuing Gentoo Linux saga, I have discovered a few things to be mindful of when working with Gentoo.
Don't forget to start your syslog daemon at boot time. One isn't installed by default. Although they tell you how to install one in the Installation Guide, don't forget to add it to the default runlevel. I forgot to add it and later discovered /var/log/messages was missing.
Don't use grsecurity unless you really know what you are doing. I couldn't get XFree86 to run. It would show its normal startup messages and then just say "Killed". I was going crazy! I've never had this much trouble getting X to run. After I got my syslogger working, I saw that "grsecurity" was killing X. After recompiling my kernel without "grsecurity", X works fine!
Due to my aformentioned space limitation, I have sought to understand the "emerge" package management tool to see how it might help me overcome my plight. What started as a simple strategy, uninstall almost everything, install X, and try again, has turned out to be far more complicated.
Emerge has the post powerful dependancy resolution engines of any Linux package manager I'm aware of. I'm really quite impressed with the "slotting" feature that allows different versions of the same package to be installed at once. I enjoy being able to do an "emerge -p somepackage" and see all the packages that will be built. Cool stuff.
What I found out about emerge surprised me. Emerge will not let you use it's wonderful dependancy engine for uninstalling things. So, suppose I want to uninstall "gnome", which has a bunch of dependancies, I would type "emerge unmerge gnome". Only one problem, it will uninstall gnome without uninstalling anything that depends on "gnome".
Now, I'm all for flexability. If I want to break dependancies, my package manager should let me, but emerge doesn't even give me a choice. I was reduced to using "qpkg -I -q gnome" to find all the dependancies by hand. (Note, "qpkg" is not installed by default, it's part of "gentoolkit".) I was shocked to find out I have no automated way of doing this! In this respect "apt" wins. I can install things with dependancies and *uninstall* them with dependancies.
Somewhere during the middle of my "xfree" installation, I ran out of disk space. No one told me that 2.1 GB isn't enough space for Gentoo. I'm not quite sure what I'm going to do now, but hopefully I can uninstall a few things and try rebuilding.
Still compiling.... X windows, gnome, and all the dependencies are still being compiled. Yes, it's been over 24 hours. I've been told this is "normal" for Gentoo. Maybe the official slogan should be, "Gentoo, because good things come to those who wait."