Sean Middleditch » 2005 » September

I have another exam tomorrow morning. Hopefully I don’t fail this one. That would be bad. Given that it’s a medical exam. Having a diabetes screening, as well as some tests of my thyroid and various blood-content tests. 7:00am on a Saturday. Ugh.

Starting right now, I cannot eat anything until after the tests. I, of course, just finished a huge dinner. ^_^

Today is the first day I’ve had with no school work in a long time. It feels quite nice. Too bad I now have backlogged worked for three different people I need to do this weekend. Ugh again.

Oh, and my new glasses have already broke. (Screws have somehow gone missing.) Will have to stop by the optamatrist tomorrow after the hospital and get them fixed.

99 bottles of rum on the wall, 99 bottles of rum…
take one down, pass it around…
63 bottles of rum on the wall. (Yeah, like I can *count* right now.)

I’m not sure which is worse: that today has sucked like a thing which sucks a lot, or that the biggest decision I have made today was which brand of rum to buy.

In other news, inebriated college chicks are vastly more entertaining than their sober counterparts. ^__^

E Muzeki rocks.

I got to see them play last night in a small book store common room, and managed to make it to the Michigan Ren Faire today and saw them again.

I highly, highly, highly recommend that everyone buys their CDs. Heck, buy two of each. I recommend even more highly that you actually see them play, however. You can’t get the same effect from the just the CDs. Actually *seeing* the energy and love for the music and Mark and Jenny put into their work alone is worth paying for, and the pure sound of the music live is priceless.

They will be playing in the Texas Ren Faire which starts next weekend. Their website also has a calendar of events if you want to see if/when they’ll be in your area.

Got my updated eyeglasses prescription today.

Really, the difference is subtle. I can see “things” just fine with or without them. Shapes, movement, colors, etc. all are fine. I just have trouble reading or seeing certain kinds of details. Basically, horizontal lines get blurred for me due to my astygmatism, which makes differentiating between an I and a T difficult, and makes certain details like peoples’ faces (especially around the eyes) hard to see at a distance.

Putting on the glasses, I can barely notice a change until I look at those very things. It’s like I have magic glasses that put crosses on all the Ts and makes people stop squinting their eyes when I try to look at them. Everything else looks the same as always.

Anyways, I’m going to try to keep the glasses on from now on. I think I had put them on a total of three times over the last year, so keeping them on will be a big change for me. I’m told I look good in them, and since I look well in them (::ducks:: sorry!), it just makes sense to keep them on.

I’m told by my doctor that my vision goes from 20/25 (right eye) and 20/30 (left eye) to 20/15 with the glasses on.

I’ve dropped the statistics class. I can’t answer even a single question on this week’s homework. Not one. Maybe I am just a complete moron, but more likely the teaching just isn’t that great. I see a lot of confusion on the other students’ faces and the fact that the teacher can’t even answer a question properly in class probably doesn’t help.

The last straw was when I was reading the book for help, and saw something akin to:

“20^n/(10!9!) is the number of outcomes, so you can clearly see that (20^n)20!/(10!9!) is the…”

No, actually, I do *not* “clearly see” why the heck that 20! is there. I get why 20! makes sense if you are selecting the permutations for an arrangement of items, but I couldn’t see any relevance to the question. None.

The stress level I’ve built up over the last three hours trying to do said homework was just too much. No wonder my hair’s getting so thing… :-/ Class is dropped, and I will either take the *other* statistics class required for my CS degree (I need one or the other; the one I took was not the recommended of the two, but was the only one open this term) or see if I can take the class at Washtenaw CC and transfer that to UofM. At least at Washtenaw I can be fairly certain that the class will be small enough to allow for one-on-one question/answer periods with the teacher, that I can get the class in the evening so I can have enough hours of work to afford being alive, and that the teacher is there because they want to teach and not because they want to be big shot at a big university.

Now of course I feel like crap since I just dropped my first ever class solely because it was too hard for me. There’s few things I dislike more than feeling stupid, and that’s exactly what I feel like right now.

On the upside, I suppose maybe now I’ll have more time during the week to do fun stuff. No, scratch that, more time for contract jobs and KANAR website work. ::sigh::

Latin 101: Pain to have to memorize so many words (and their forms) in such a short amount of time, but it’s not *that* hard. Especially given how heavily the English vocabulary is based on Latin. (Although it is *not* a Latin derived language; it’s actually of germanic descent. I something I didn’t know until I browsed the Wikipedia entries for language families the other day.)

Stats 425: I get the concepts, I don’t get the math. The teacher does a poor job of explaining things, the book doesn’t do much better, and the other students seem to be as lost as I am, even if they *think* they have a grasp on it. The course is taught of the form “here’s an algorithm for how to handle a situation like this, so your job is to figure out which situation you’re dealing with and which formula to apply.” I hate that stuff. Tell me how and why the formula works, help me make sure my understanding is correct and complete, and I won’t be reduced to just basic pattern recognition and rote formula application. Oh well. If nothing else, I’m at least finally learning what so many other people have been repeating for years: story problems are teh suck.

Math 215: Calculus III. Two years after I have Calculus II. Which was one year after I had Calculus I. I do remember much (most, possibly) of Calculus I, largely because my professor, Mark Battel, just freakin’ rocked. Calculus II… no recollection at all. The stuff we’re studying in Calc III so far is pretty simple, basic 3D concepts that I’ve been familiar with for years thanks to being a “wannabe” game programmer. Once we start getting into into triple integrals and so on, though, I will, as they say, “be fucked.” The labs/group projects are also not in the least bit an idea I appreciate. Sure, maybe they’re necessary because we’re lectured in a huge lecture hall and have no time for question/answer or frequent work and quizes. But hey, UofM is a *real* university, and quality of teaching isn’t nearly as important as doing things traditionally. I got better instruction at far lower costs at Washtenaw Community College. They just didn’t offer a 4-year degree.

In any event, stress has sucked. I haven’t and won’t go to the Rennaissance festival this year, I just don’t have the time. The constant work load, with maybe one day of peace a way, is killing me. I wonder if the stress is contributing to the hair loss… :-/

I bought a box set of Munchkin yesterday, and have now become addicted to it. Best card game ever, except for maybe Euchre, and that’s only a maybe, mind you.

The basic premise goes something like this. You and your buddies are playing a classic dungeon-delving role-playing game. You are all munchkins. (Which is a term for over-powered rules-lawyered number-crunched paper-penis completely-sick characters. i.e., what almost every D&D player learns how to make during their first session of gaming.) You want to be the first character to level 10. You have no qualms cheating or screwing over your friends to be the first.

It really is fun, more so with more people. You kill monsters, make selfish deals with other players to help them kill monsters (or to have them help you kill them allowing you to gain levels), and do whatever you can (be it ok by the rules or not) to screw your friends over and cause them to lose levels, lose equipment, or outright die and have to start over.

I’ve got the two expansion packs to the original set in the mail. I may at some point buy the “dork world” (vampires and werewolves and so on) version of the game, too, if the original series gets old.

All in all, if you either like card games, like table-top role-playing games, or in any way don’t suck, I suggest that you give Munchkin a try.

Arrrr, matey! It be thar talk like er pirate day, it does. Good day it be to be havin’ a bottle o’ the captain’s finest!

Well, I knew it’d happen eventually, and I guess today’s the today. Yet another wonderful facet of my biology is coming into play. Hair loss. :-/

I’ve always had thin hair. Wiry, practically weightless, fragile hair. Now I just have less of it in key places.

Looked into treatments, of course, and none are appealing. The two major commonly accepted drugs either (a) don’t usually work for baldness near the crown or (b) have possible side-effects in areas of the body which do work just perfectly fine and I’d rather leave it that way.

Guess it’s time to finally lose the long hair and pick something that “works” for people with thin/balding hair. I’d rather stab myself in the knee than lose my long hair, but then I’d rather have something short but attractive than be one of “those” people, the ones who look like the only reason they have long hair is to hide all the parts of their head that don’t have any.

The ultimate irony is that I’m getting ready to schedule some treatments to *remove* hair elsewhere (namely my shoulders and back). There’re ten year old boys that have more back hair than I do, but my vanity knows no bounds. Maybe this cranial hair loss is just karma kicking my ass.

On the upside, I have a fresh new bottle of my favorite happy juice (the afore-mentioned Captain Morgan’s, of course), and that if nothing else cheers me up.

Telnet is a network protocol used to connect to a remote terminal controller. Both telnet and “modern” terminal interfaces are fairly clunky. The driving purpose for most of telnet’s features is to work around the (in my opinion) broken design of the UNIX terminal interface, which deviated from the character device norm of most UNIX drivers.

A large problem with the terminal interface, aside from its use of ioctls instead of sticking to escape strings, is that the terminal interface is based around non-raw input. For example, to begin an escape sequence in VT100, you use the ESC code, 27. The same code generated by pressing the Esc key on your keyboard. How is an application to tell the difference between the user pressing Escape and the beginning of an escape sequence like “change the text color to red” ? Software generally ha to use gross hacks like waiting after the receiving the ESC code to see if more characters directly follow. This can, and does, cause occassional breakage and frequent confusion and irritation. Presumably, the intention of the original terminal designers was to allow the user to enter raw escape codes, but there are better ways of doing that today. The problem continues to manifest itself in that there is no way to detect if a user pressed the shift key, or which shift key they pressed, which is useful information for a certain class of application (such as games).

Looking at both protocols, there is no clear and safe extension mechanism. Extending the terminal requires additions to code in both the terminal driver and the user application/library. Extending either telnet or the terminal is tricky as there is no way to safely do so without potentionally stepping on other extension’s toes.

ZMP solves the problem for telnet, and furthermore can make it possible to dump the terminal driver altogether, at least while running over telnet. This is suboptimal, however, as you are stuck using a protocol designed for terminals without using terminals, and thus accepting the limitations and design warts of telnet which exist for terminals’ sakes.

I’ve thought a good deal about how I would replace telnet altogether for MUDs. There is a good part of me that also wants to replace the legacy terminal interface with something more modern and useful, although other people certainly already have a grasp on that problem (if not a clear plan for a replacement).

My goals for a telnet replacement are:

- Do not bloat the protocol into extreme inefficiency
- Make coding both the server and client end of the protocol incredibly easy and safe
- Allow safe extensibility
- Efficient support for commonly used/requested features

I believe I have a design that satisfied these objectives.

The idea is based on sending messages between the client and server. Communication is identical in both directions; that is, the client talks to the server the same way the server talks to the client. Messages are either commands or data. Each command is a 32-bit (4 byte) chunk. Data chunks are up to 2^16-1 bytes in length. These are the only two types of messages sent over the protocol. A data chunk is always follows the command it is attached to.

The command message could be formatted something like (this is rough and non-final):

- First four bits are a magic number, of the binary form 1010; this is not particularly strong, but it is still somewhat useful for debugging purposes.
- Next 10 bits are the command ID. Each command has a unique ID. That allows for 2^10 (1024) built-in commands, not including the extension mechanism.
- The next bit is an unused flat bit. It must always be set to 0 on transmission and should always be ignored upon reception. The flag could be useful for any future protocol changes.
- The next bit is the data flag. If it is 1, then a data message follows the command. If it is 0, then the next message is another command. This flag also affects the meaning of the last 16 bits of the command.
- The final 16 bits depend on the data flag. If the data flag is set to 1, these 2 bytes are the length of the following data message. If the data flag is 0, the meaning of these 2 bytes is defined by the command invoked. For example, a set-color command might have a 16-bit RGB value encoded in these 2 bytes.
- The whole 32-bit command message is in network byte order.

Most commands will probably not have a data message attached to them. For example, to set the text color, you should only need a single 32-bit command message. The command ID would be the “set color” command, and the 16-bit data segment would be a 16-bit RGB color color. (For MUDs, 16-bit is way more than enough.) Telnet gives you 32-bits to set a color out of 8 choices, this can give you 32-bits to set a color out of 2^16 choices.

I need to write out a simple spec and a reference implementation for all this.