Why Do I Program Computers?

Today, Mike and I reminisced about our early experiences with computers. (Keep in mind his experiences predate mine by a decade: Before I even had a computer, he was already writing code professionally!) Doing anything and everything on a computer in those days, we decided, was harder, slower, and usually resulted in a relatively poor result. Somehow, however, those hard, slow, poor results were just so much fun! In one of my stories, a Cyrix 686 overheated so badly that it smoked up the paint on the outside of the case. What did Therm and I do? We took a $5 Dollar Store fan, cranked it up on high, pointed it directly at the smoldering silicon, and kept going! As I recall, the machine didn’t lock up anymore that night. What were we doing that required us to keep plugging in the face of fire and destroyed equipment? I don’t remember exactly, but I think it involved drawing some pitiful web graphics in Paint Shop Pro 6. Nowadays, I have access to equipment that is infintismally better and I have the knowledge to push that equipment, but none of it can rival the sheer exhiliration I used to get when I learned how to do something totally new on a computer. I’m not a computer God or total guru, but I’ve done a little bit of everything on a computer to the point where nothing new I do is truly new anymore.

Sometimes, when I’m writing code, I wonder what really got me into coding in the first place. Then, a wonderous memory hits me, and I settle in and code away without reservation. Sometime around October 1996, I got my hands on the Internet for the first time. It was as if the stars were in alignment when I actually sat in front of that honking CRT to see what the World Wide Web thing was all about. I didn’t have a computer of my own, but I was taking Keyboarding/Word Processing at the Leslie County Area Technology Center. In addition to getting some hands on time with Windows 3.1 and DOS 6.22, my teacher had given me about 35 old copies of PC Magazine. (Included in this collection was the cover story that compared 486 processors to their Pentium bretheren!) I poured over them with every spare moment for about a month! You must understand that long before this exposure, I had always wanted to be a computer guy. There was one small problem, though: My dad thought personal computers were like an Atari, used for nothing more than playing games.

Anyway, given my fruitless obsession and this new found exposure, I was foaming at the mouth for anything computer related. My teacher, for whatever reason, thought it would be a good idea to show me what the Internet was. The classrooms were not wired with Ethernet, and come to find out, neither was anywhere else in the building. The only connection was in the Principal’s office via a 14.4 dial-up connection to the only ISP available, Leslie County Internet, otherwise known as LCI.* Having never heard a computer dial, I was shocked at how it sounded like a fax machine, except that it seemed to take longer before it got quiet. (Yeah, I know: That part is basically a fax machine, but I didn’t know that!)

After we dialed up, my teaching instructed me to click on this Netscape thinga-ma-bob.  Now, I don’t know for sure, but I’m quite certain it was Netscape 2 or Netscape 3. (I know it wasn’t the Gold version of either, because the colors were a monochrome set of greens and blues.) The teacher then asked me if I knew any web addresses, because the browser didn’t just take you to a Homepage. The only one that came to mind, for some reason, was www.discovery.com: I guess I had seen it on a Discovery Channel commercial or in an AOL commercial. Using my recently learned touch-typing skills, I typed it in the Address Bar and hit Enter. What followed next was life changing…

Suddenly, the page background went from a deep gray to white and some text appeared with some science headlines and a schedule of the show.  So far so good, but when a bunch of little boxes with little bitmap icons in the top left corner, I was enthralled. It looked like there was a logical structure to all this, almost like some kind of vines or tree. Everything existed as a square of some type or other. Slowly, one by one, the little boxes gave way to actual images. Now, as ignorant as I was about all this, I wonder how in the world someone could create such an awesome graphic in Paint! It didn’t occur to me that there were very cool, sophisticated programs that do this. I’m pretty sure my mouth dropped open. After everything had loaded, the teacher told me to click on anything that was underlined and it would take me to a page about that underlined thing. For the next 20 minutes, I surfed around on discovery.com, then I eventually went to WebCrawler, as it was one of the sites I remembered from the AOL commercials I had seen. I didin’t have a clue what HTML was or how to even start creating web graphics, but I knew in my heart that I wanted to know how to create these web pages. Over the next few months, I finally got a computer. About six months after that, I had created my first webpage, affectionately called Gassy’s World and hosted on Tripod. There was plenty of new, awesome stuff to learn on a weekly basis: FTP, CSS, IE 4/5 and all it’s bastardization of standards, Photoshop, ad infinitum. The rest is history…That, my friends, is why I do it to this day.

* Leslie County Interenet was run by a former KY State Police officer named David Tennill. The ISP was one server with about 20 modems and a T1 in his basement. David and his son were horrible night owls, so if the network went down, you could only get ahold of them from about 11PM to 3AM. You could call then and they answered cheerfully as if it were morning. The service went out for about 2 weeks once due to a fried power supply. When I asked if we would get a break on the bill, David laughed and said, "Nah. We need the money to fix the server." Ah, what times we had. I think they were running some sort of UNIX, because eventually, they gave each LCI subscriber 2MB of webspace. I remember fighting with WS_FTP to get my little page up! The service was sold to TDS, the only available local telco, in 1998. God bless the Tennill’s for hooking us up with our first trickle to the web.

I Survived Another Year

Even though my year at the ATC doesn’t end until June 15, I have survived my fourth year as a teacher. This year was a decent year, at least I think it was. Joe and I improved the Office Technology Program in several ways.  For one, we gave out 53.8% more certificates. For another, we  improved our passing rate on  the Skill Standards Test by 18.2%.  And finally, we had  12 practicum students…

Somehow, even with these improved metrics, I have a feeling that the powers-that-be will be less-than-impressed.  Improve this much, and they want you to improve that much. "You can always do better" they say.  Of course I can always do better, but I’d be much happier is someone would accept the stairstep improvements that I have managed since I started. Slow and steady improvement will lead to great things.  I wish someone would recognize this fact and actually make me feel good about what I do everyday.  I don’t require constant validation, as I draw a lot on my inner self, but it would be easier to get out of bed every day if I felt like I was pleasing someone.

My Apologies

It has come to my attention that my website has been infected with script that was supposed to install malware on visitors’ computers.  If you have visited the site recently and your antivirus program has popped up with a warning, I apologize. I do not have a clue how the site became compromised, but rest assured, I have cleaned the site and there should be no more problems. If you have visited the site without virus protection, I suggest you scan your system.  On Windows, I highly recommend AVG Free Antivirus, although Symantec, McAfee, and Esset all do a good job. 

Once again, I apologize to anyone who was affected by this malware attack!

Compiling Squid in Ubuntu 7.10

Compiling Squid 2.6 in Ubuntu is easy, once you know that there are different command line options you must use aside from the defaults (which are specific to BSD-flavored systems).  Note that I specifically enabled digest authentication with the –enable-auth=digest  switch because our intended application of Squid  needed a more secure password transmission method than Basic Authentication.   Here’s some general steps:

  1. Download and upack the Squid source. I used Squid 2.6 for this.
  2. Open a terminal and change to your Squid source directory.
  3. Type the follwong and press enter:

    sudo ./configure –enable-auth=digest –prefix=/usr –localstatedir=/var –libexecdir=${prefix}/lib/squid –srcdir=. –datadir=${prefix}/share/squid –sysconfdir=/etc/squid

  4. After a hundred lines or so scroll by, enter the following:

    sudo make
  5. After several, even more ugly lines go by, type the following:

    sudo make install

  6. There is no way to set the default location of the log files with Squid using configure, and I couldn’t get the recommended patch to work, so I came up with an easier solution.  Issue the command:

    ln -s /var/log /var/logs

That’s it. Squid is installed. Now, I didn’t say Squid is actually configured on Ubuntu at this point.  Getting it all set up is a story for another day! Depending on several factors, you’ll have to do a lot of chmods to make sure the permissions are right! Someday, I will probably post my PHP-CLI scripts that control user authentication and site blocking! Until then, good luck.

Two Different Worlds

I took my FBLA students to a local elementary school for our annual Dr. Seuss Reading Day celebration.  My students are in high school and they read Dr. Seuss books  to preschool and primary grade students. This year I noticed something that hadn’t occured to me before: The primary school teachers have a great deal of physical interaction with their students. And no, I’m not talking about inappropriate touching: I’m talking about a tap on the shoulder, a nudge to remind the child to get back in line, or simply patting the child on the back in praise. I was shocked!

Unless you’re a high school teacher, you may not understand why I was shocked. My astonishment stems from the fact that the number one thing you’re told as a beginning teacher is to never ever touch a student, under any circumstances unless they are life threatening (i.e. break up a fight, administer CPR, etc). I have been teaching for four years and have only touched a student twice. In each case, I got too excited about how well they had done on an assignment and patted the student on the back. My immediate response was to back off with my hands in the air and proclaim that I was incredibly sorry that I had touched the student and it was a complete mistake.

With these primary school teachers, though, the ballgame is entirely different. I asked my principal about why these teachers were touching the kids and she reminded me of something from your basic Human Growth and Development class: Young children need positive touch to help build self-esteem and to learn to function with other people. Therefore, it is acceptable for appropriate touches (like those I mentioned above). If you’re curious as to whether or not touching is important for healthy development, watch a biography of Dudley Moore: His mother nor father ever touched him and he had all sorts of intimacy problems as an adult.

Even though I understand why they are allowed to touch their students, I still can’t imagine actually having that much contact with someone else’s child on a daily basis without being terrified of being blamed for something inappropriate. I suppose much of that fear would vanish once I saw how naturally touching most children are. I remember hugging my primary school teachers, and while I don’t recall a specific instance, I’m pretty sure they probably patted me on the back or physically reassured me in some way.  It’s just amazing to me how different the paradigms are between primary and secondary school rules and functions!

I Guess You Can Say I’m a Mac User

I bought a Windows Vista HP DV2210us notebook in March 2007 because I wanted to be an early adopter and figure out Vista before the rest of the world. Now, unlike a great deal of the world, I don’t think Vista is a total waste: Some of the UI improvements are nice, especially the breadcrumb navigation and the Start menu search.  My biggest problem with Vista is that it’s slow as molasses.  I upped the RAM in the HP to 2GB, but it didn’t help much. Aside from the laptop at home and for web and Java development, my classroom is a lab with 20 brand-new, Vista-equipped Dell Optiplex machines.  Again, they have Core 2 Duo processors and 2GB RAM and are still slow as molasses.  So much for progress.

In September, I bought my MacBook with a 2.2Ghz Core 2 Duo and 2GB RAM. Equipped with OS X 10.4.12, the MacBook is a pure joy to work with. The jewel goes from turning on to ready to be useful (i.e. no latent grinding like Vista) in about 20 seconds.  That’s simply fantastic and something I have never witnessed in a 32-bit Windows OS. (I had a DOS box that would boot in about 8 seconds, but I don’t think we can count that!)

As far as getting stuff done, iLife is the defacto consumer-level media suite as far as I’m concerned. Vista’s Photo Manager and revamped Movie Maker are improvements, but iPhoto and iMovie HD 6 (which is available for download if you own iMovie ’08) beat both hands down. I use NeoOffice (a Mac-native spinoff of OpenOffice.org) to handle all my Office tasks. For software development, I use Eclipse and custom-compiled Apache, PHP, and MySQL. Now, I could have compiled these on Windows, but compiling the stuff without spending money on a full-blown compiler is a huge challenge. To top it off, I can get 5 hours of full productivity off of one battery charge, compared to 2.5 hours on the Vista machine. 

The bottom line is that I don’t use the Vista box much, but the MacBook gets carried around and used for work and play day in and day out. It’s a joy to use and I would recommend it to anyone, as long as you’re willing to relax your PC mindset.  (Let it be known I don’t like Leopard AT ALL: I downgraded back to 10.4 after about a month of suffering.)

If Only They Could Only Un-Learn the <font> tag!

I have come to the conclusion that teaching someone to un-learn old-school HTML markup is nearly impossible. This seems to be the one thing that plagues my better students moreso than those who really do not care about web design. Most of my students that are really into designing webpages already know how to do a lot of basic stuff with good ol’ 1998-style HTML including but not limited to: change font faces and colors, add a background image, use a table for layout, use blink/scroll, and (shudder) add music that plays when the page loads.

It stinks, because part of me is very ecstatic that they cared enough before they got to me to figure out how to get this stuff to work. Heck, when I was in high school, I did exactly the same thing with those same tags. However, it becomes very frustrating when they want to use these old-school methods when I am in fact trying to teach them how to do the same stuff with the modern, preferred CSS methods.  Is it so hard to forget about the <font> tag and use a nice class that can be re-used and re-applied over and over?!?

I think the biggest obstacle to having them change their markup behavior voluntarily is that in the scope of a classroom, it’s impossible for them to experience the frustration of changing a site layout when all fonts and colors have been marked up inside the HTML itself.  If they had to go through 1,000 static pages to get rid of all their <font color="red"> tags, I think they’d probably be a little more receptive to coding their sites from the ground up to take advantage of a central stylesheet for all things visual.  I guess this shows that a teacher’s words are usually no substitute for experience!

Xfolders 1.5.1 Crashes in Leopard (and how to fix it!)

I’ve had my MacBook now since September and I really like it.  Apple has a good thing going. That said, some things about OS X are strange, such as you can’t see certain parts of your filesystem with Finder unless you a) resort to some odd Terminal commands that need to be flipped on and off depending on how much of your filesystem you want to see or b) get a wonderful piece of software such as Xfolders to let you see everything when you need to.  Xfolders is great. It was one of the first things I downloaded and installed when my MacBook still smelled new.

Then I did something stupid: I upgraded to OS X 10.5 Leopard.  I haven’t had as much trouble as some who have taken the plunge, but one side effect was that in Leopard, Xfolders would crash anytime I tried to click on the root drive (cheerfully known as Macintosh HD on my MacBook). No matter which pane I clicked on, attempting to access root would bring up the OS X crash log.  Oh the horror! I may as well be running Vista! :)  After much agonizing and digging around, I found the solution to the problem:

  1. Open a new Terminal window
  2. type rm ~/Library/Preferences/com.kai-heitkamp.Xfolders.plist and press Return

That’s it! I’m not sure why, but sometimes, Leopard can corrupt the Xfolders configuration file, which causes Xfolders to crash upon launching.  By simply deleting this configuration file in your home directory, Xfolders can once again give you easy access to viewing 100% of your files whenever you need to.  I hope this helps someone!

Author’s Note (February 18, 2008):  I have some reports that this was a problem with Xfolders on some versions of OS X prior to 10.5.  This fix may work for OS X 10.4 Tiger sometimes, too!

It’s OK to Voice an Opinion on Right and Wrong

I got an email today with a prayer that was read by Joe Wright in 1996 to the Kansas House of Representatives when he was asked to act as Chaplain to the House.  Here’s the prayer:

Heavenly Father, we come before you today to ask your forgiveness and seek your direction and guidance.

We know your Word says, "Woe to those who call evil good," but that’s exactly what we’ve done.

We have lost our spiritual equilibrium and inverted our values.

We confess that we have ridiculed the absolute truth of your Word and called it moral pluralism.

We have worshipped other gods and called it multiculturalism.

We have endorsed perversion and called it an alternative lifestyle.

We have exploited the poor and called it the lottery.

We have neglected the needy and called it self-preservation.

We have rewarded laziness and called it welfare.

We have killed our unborn and called it choice.

We have shot abortionists and called it justifiable.

We have neglected to discipline our children and called it building esteem.

We have abused power and called it political savvy.

We have coveted our neighbors’ possessions and called it ambition.

We have polluted the air with profanity and pornography and called it freedom of expression.

We have ridiculed the time-honored values of our forefathers and called it enlightenment.

Search us O God and know our hearts today; try us and see if there be some wicked way in us; cleanse us from every sin and set us free.

Guide and bless these men and women who have been sent here by the people of Kansas, and who have been ordained by you, to govern this great state.

Grant them your wisdom to rule and may their decisions direct us to the center of your will. I ask it in the name of your son, the living savior, Jesus Christ.

Amen.

I applaud Mr. Wright for actually giving his opinion about what he feels is right and wrong.  I read this and realized how tight-lipped I had become about telling people what I felt was right and wrong. There is nothing wrong with having an opinion on what’s right and what’s wrong, especially in an elected body such as the House or the Senate. To totally separate right and wrong from the law is impossible, even if a lot of what governs right and wrong in those contexts is governed by religion. Mr. Wright in no way suggested that anybody had to believe the things his prayer had to offer. Somehow, though, just through its utterance, a great number of people were very offended. How can we go on and on about Freedom of Speech and crucify this man for stating what he believed in…All I know is that Mr. Wright is welcomed in my home anytime, simply because he had the gumption to speak his mind.