Archived news items from October 1998
Since this is old news, some links may be broken.
My students have begun their six weeks projects. Many are busily working, and others are complaining about the difficulty. CS-I is working on Blackjack, while CS-II and myself are trying to write Pong.
I finally got a chance to install Linux on the 'server' at school. So far it seems to work just fine. The install was fantastically easy, even autodetecting my PnP sound card. Unfortunately, I lost all the .mp3s that had been on that machine, and they're too big to re-download, so I'm probably going to have to rip and encode them at school. Which might not be too bad; I can just let the server sit and do them overnight.
If I can get a basic mp3 player running by Monday I'll be happy. Then I can start working anew on the voting server that'll run on it.
Did I mention that I love it when daylight savings time ends?
Went with the Academic Decathlon kids to a mixer/meet in San Marcos. We got to mingle, eat pizza, and take a practice test, which we're going to score here pretty soon. It was pretty nice, but kept me from getting any real work done this afternoon. Oh well.
Archived all the September "news".
Hey. Not much has been going on in the last week, which is why the lack of updates. I finally got the server for my classroom put together and running. I'm currently running Win95 on it, but that's mostly because I couldn't find the RedHat install disk at school when I went up yesterday.
So I've spent the last two days ripping and encoding .mp3s from my CD collection, trying to make some songlists to use at school. So far I got Stevie Ray Vaughn and Jimi Hendrix done. And next is probably going to be just a greatest hits mix of some of my favorite songs over the last ten years or so.
I was unable to score my CD-R, tape backup and SCSI controller for prices I was comfortable with in Austin, so I'll be ordering them online in the next couple of days. That should be fun. Nothing like mail-order from companies you've never heard of...
There have actually been no changes to RingWorm since the last update. I guess I finally got the code stable enough that I'm comfortable where it stands. Though I did spend most of Tuesday looking for some canned networking code so I can get UDP/IP-based networking up and running in a DOS/Win9x environment. Found some cool libraries for DJGPP, but they don't seem to work on my machine. Anyway.
Decided to just go with the worms project as a six weeks grade for my computer science 2 students. Or something similar, at least. Should be a lot of fun.
Squashed some show-stopper bugs in RingWorm. Version 1.2 is now up.
Spent way too much time today messing around with the Worm program. Added turbo mode, multiple food objects, a "bounce" mode and more. Changed the name to RingWorm because I can. Get it from the code page.
Okay, just uploaded a fully-functional, playable, and maybe even enjoyable Worm program. I also moved it from the works-in-progress section to the completed section of the code page. The queue Does The Right Thing now and grows as necessary. There is food, which makes you longer. The only things I'd really like to add for increased playability: a menu that allows you to set all the options you'd ordinarily have to use the command line for. Secondly, I'd make the use of "walls" optional. You could have them wrap (as it currently does) or terminate the game. Of course, sprites, bitmaps, music, saving high scores, a demo mode, and several other things would be nice, too. I may experiment with them, too, but I've learned just about all I wanted from this little projects, and I'm happy enough with it as is.
Downloaded the Worm code from my own web page (since what I had locally was lost in the HD crash) and got it running again. Made all the changes that I had originally made before but not uploaded, and then went ahead and got food items working properly (they now randomly respawn and move around). I've uploaded the new version. The only current problem is that the queue that keeps track of where the worm has been is too short, and aborts the program once the worm reaches a certain length. In order to fix it, I'm going to have to Do The Right Thing and actually implement a variable-sized queue class that grows as needed. So much for the ten-minute ADT I've been working with up to this point.
Oh, and the number in the upper right is now the score (it's only displayed in single-player games). FPS display is currently disabled, though the code is still in there. It just occurred to me that I should have enabled it when in benchmarking mode.... Well, I'll fix that in a bit.
Last night I was invited by some old college friends of mine to an open mic they were hosting. They are in a Christian band called "Moth", and they were essentially headlining the event. Well, I got to run sound for them while they were playing (about ten songs overall), and I think I did okay, seeing as how I've never run sound for anyone before. It was quite a bit of fun, and now I appreciate my sound guy at Lakeline a lot more. Running sound with any number of instruments is hard.
Of course, I got on the mic and performed a few songs, and they went really well. Some of you reading this may be wondering why I didn't mention that I was going to be there earlier so you could have come to hear me. The biggest reasons: 1) this was a Christian open-mic and the focus was on glorifying God, not the Graham Mitchell show, 2) I didn't know for sure it was happening until Thursday night, and 3) I hadn't practiced very much and almost expected to crash and burn playing (which I didn't).
I met a girl there who was the best friend of one of my former students and graduated from Leander High School two years ago. Small world....
One of my students gave her life to Christ on Wednesday. I believe that I may have had something to do with it, which may be the first time that I know of where I have inspired someone else to start a relationship with God. I'm so lucky to have the opportunity to impact my students in such a way. I love my job!
I'm pretty sure the student in question reads this web page from time to time, so here's a little encouragement. I'm proud of you. It's hard to admit when you're wrong, and even harder to admit that you need Someone Else to help you in life. But God is a loving and gracious Father, and He'll never let you down. Being a Christian means making God's plans your first priority, but choosing to follow is a blessing-filled life. Seek to serve Him every day; He will give you rest.
Looked at a shareware typing tutor today. It's really nice, and seems to automatically detect which type of keyboard arrangement you are using (QWERTY vs DVORAK). Speaking of which, I currently have a Dvorak keyboard here. I decided to do a little swap with the school. I had been using a surplus IBM "clicky" keyboard at school on the server I'm building, running through a PS-2 -> 5pin mini-din adapter (since the keyboard has a PS-2 connector). At home, I'm using this old cheap keyboard I bought at Sam's about three or four years ago, running through a 5pin -> PS-2 adapter (since my computer has PS-2 connectors for both the mouse and the keyboard). Well, it actually occurred to me I could get rid of both adapters by swapping keyboards.
A nice side effect of the change is that this clicky IBM keyboard has removable key caps, and so I have arranged them in a Dvorak format. I can pretty much touch type with QWERTY format, so I don't really need them to be labeled correctly. But I'd like to learn how to type on the Dvorak keyboard arrangement, since a) I'm a rebel, and b) I hear it's faster, anyway. If I can confirm that Linux supports it, I'm sold. The only crappy thing will be that many of the commands in vi won't be in the right place (at least for DOS).
Anyway. I need to get to sleep.
You know you've been coding in C++ too long when...
You read an article with a statement like:
Of course, as they say, cleanliness = godliness.
and you think to yourself, "Assignment? They need to use == for comparison..."
Just recovered 82 mailbox files from the old C: drive. Which is pretty cool, seeing as how I only had about ten different mailboxes before. I'm sure there are some missing sections and some duplications, but probably most of the mail is there somewhere. I'm going to go ahead and take the drive to school tomorrow, and I'll sort through the salvaged mail sometime.
Interesting anecdote time (like I don't already have enough of those): I was bitten by a ferret yesterday. Some friends of mine from college (recently married) have ferrets. For some reason, the male decided to bite me, even though he's never bitten anyone else. Ever. And he bit me twice, drawing blood both times. I'm sure this is somehow due to the fact that this friend was constantly attacked by my cat the whole time we were roommates (a year or two ago). I think cosmic justice is being served. "Vengeance is mine, " says the Lord; "I will repay." - Romans 12:19
Oh, and both ferrets are clean and ordinarily very pleasant. They do have all their shots (so don't worry, Mom).
Howdy. Been an eventful week since my last update.
I'm attempting to build a server for use in my classroom. It'll be a linux box that I hope to use as a router/packet filter and perhaps a jukebox. I'm trying to get a large hard drive for it (2+ gigs).
So, a friend of mine scored a surplus 4-gig Maxtor drive from his work. My home system currently has a 3-gig Western Digital. Both are IDE/UDMA drives, and I prefer WD, but an extra gig is nothing to sneeze at, so I was going to swap drives in my system and then take the 3-gig drive to the school to use in my server.
I put both drives in my system and to make a long story short, I inadvertently formatted the 3-gig drive instead of the 4-gig. It should be mentioned it this point that I've never made a full backup of my drive, and only backed up a little of the most important data on July 19 of this year.
This means I basically lost everything. All the email I've ever received is gone. My journal entries after July were gone. All the code I've written since July (including the latest build of the Worm that I never uploaded) is gone. My address book is gone.
Well, I bought Norton Utilities in the vain hope that it could unformat a FAT32-formatted drive. It did its best, but was only able to recover 10-25% of the drive, and it wasn't the parts I needed recovered. I have since been able to use the nice UnErase Wizard to recover almost all my journal (I believe I may have lost a paragraph or so from my last entry), and my budget statements, and I'm going to see tonight if I can maybe get some email back. Despite the fact that it couldn't do a perfect unformat (which is impossible), I'm very impressed with Norton Utilities and can highly recommend them. Even if I never use them again, just getting the journal back is worth the $60 I spent on the package.
Since I don't have any pirated software and since I had made a CD in July of the installers for all the shareware/freeware utilities I use, rebuilding the system itself (ignoring all the data) isn't too hard. So now I'm running off a clean install of Win95 on the larger hard drive. I'm going to try to recover email tonight; I'll just wipe the smaller drive and take it to school for the server tomorrow.
If you're wondering why I hadn't been updating recently, this is the reason. In fact, I just now redownloaded local copies of all the web page from the web server.
So, if you're not making semi-regular backups of your stuff, start! I managed to get away with it for five years or so, but I just got bit hard. Believe me, you want to avoid this if you can.
I got my air conditioner to shut up today. It may not work again, but it will definitely be silent.
Of course did some more coding on the Worm. Rewrote the collison detection code to use circles instead of bounding boxes, which actually gained me about a 25% speed improvement. Figured out how to grow the length of a worm so that it wouldn't accidentally collide with itself, and that is now in. Added items to the game. So now you can have a "pizza" sitting on the screen, which when touched goes away and makes you longer. There's no demo of this currently uploaded, since the one pizza I hacked in is in the same place everytime. I've got to put them in randomly, and try to place them on the screen somewhere clear. And in different sizes. Then I'll have recreated Pizza Worm. So, not much left now before it could actually be playable as a real game (albeit with slightly less interesting graphics).
The air conditioner is my classroom is giving up the ghost. It emits various noises, including a shimmy, a high-pitched whine and a low moan at sound levels ranging from silent (very rarely) through quiet and then annoying, and up to maybe 50 decibels (you have to speak loudly to be heard above the din). They're supposedly sending someone "right over" to fix it. I'm going to kill someone if it's not fixed by tomorrow. Eight hours of trying to teach over it to slightly alarmed/annoyed students is weak.
Got lots more done on the Worms thingy. Collision detection is now in (meaning the "game" can quit when you run into someone else) as well as an fps counter and a benchmarking mode that turns off vsync. As the number of worms increases, collision detection takes a bigger and bigger bite. 400 worms brings even my machine to its knees. But ten worms (far too crowded to be playable) still runs at nearly 1000 fps on my machine. Without collision detection, the number of worms only makes a negligible difference in computation time, until you start getting into the thousands of worms.
Anyway, the most recent build is up, including full source code (as the last one did, though I didn't mention that) and updated documentation.
w00p! This page just reached an average of two hits a day! This means that among the hundreds of students, dozens of friends, and handful of family members I know, that fourteen of you are bored or dutiful enough to visit my pages once a week. I don't know who you are, but I guess you do, and I appreciate it. Certainly a big jump from the two hits a month or so I was getting before the site redesign. I'm sure no longer having stale content has a lot to do with it.
Anyway, to celebrate, I've been doing a wee bit of housecleaning. I hooked up some broken links on the links page, and added a section for friends and family, starting it off with links to my cool brother's web page and to my friend Anthony's band page Burn. In addition, I finally added a link to Lakeline's web page, which has been up and running for about a month now.
Pulled some of the old updates off and archived them. Also changed the !DOCTYPE for all the page headers, which incorrectly labeled these as following the HTML 3.2 DTD. Now it (correctly) shows I'm using HTML 4.0 Transitional.
So, thanks for visiting. I'll try to continue to be a person with a semi-interesting life and tell you all about it a couple of times a week. (Wow. I'm a man on a mission.)
Work continues. Program won't appear any different than the last one, but code is massively restructured and much cleaner. Worms are now encapsulated in an object that knows how to draw itself, keeps track of its own tail, has its own movement keys, colors, etc. This means having four worms is just as easy as having one.
The program now accepts command-line parameters to request a given number of worms (up to 4). Each are moved with their own keys. Read the readme to see color and key information. Of course, the latest build is now uploaded to the code page. Time for me to sleep.
Tracked down a bug in the Worm code, which is why he was only moving at perfect angles (0,45,90,135 degrees), and why he appeared "slow" some of the time. I was rounding dx and dy to the nearest integer and not x and y (the pixel locations). This is fixed. He is moving much more fluidly now, and at arbitrary angles. He is cool colors, too. The latest build is uploaded, if anyone is really that bored.
Wow. Has it really been nearly a week since I updated?
Six weeks projects took me considerably longer to grade than I expected. I was at school all day Sunday, Monday late and still barely got them turned in in time. I'm definitely going to manage my time better for the second six weeks.
Stayed up way too late last night coding. Got a wild hair and felt like
installing Allegro, the graphics/game library for DJGPP. Then of course I
had to read the tutorial, and then just see if I could get something to
compile... Well, one thing led to another, and I banged out a little Nibbles
sort-of game (still in progress) in about four hours. Spent the first hour
or so trying to get anything to appear on the screen, an hour and a half in
the middle trying to nail down physics equations for a billiard ball that you
could "hit" with the mouse (subject to friction, etc.), and the last hour and
half implementing a queue ADT and trying to figure out how to move an object
across the screen which had a bearing (degrees) and a speed. I'm actually
embarrassed it took me that long; how hard is dx = speed*sin
theta
Anyway, I'll upload the executable and link it to the code page. All you do is move around the screen right now. The game stops if you hit a wall. No biggie, but get it if you care. Probably only runs in DOS under Win95, or DOS somewhere else if you happen to have DPMI memory served.
Jesus loves you. This I know.
This page was written by hand.