Autoblography Part 25: The Beginning of the End

By Shamus Posted Thursday Oct 6, 2011

Filed under: Personal 102 comments


And so I arrive at my senior year. I’m eighteen. I’ve always wondered what it would feel like to get to the end of all of this schooling. I remember what it was like to sit in first grade and look at the sixth-grade kids in awe. The lofty seat of sixth grade is now six years behind me. Have I really been in school for twelve years? Adult life is just a few steps away.

I’ve managed to wiggle my way into a few computer courses at the high school. Based on my success at Vo-Tech, I was able to convince my guidance counselor to waive the normal mathematical prerequisites and let me near some computers.

In the mornings I have a computer-aided drafting class. It’s fun and interesting, but I can tell drafting isn’t for me. I had a traditional drafting class back in junior high, and I thought the work was a bit too fussy. I completely understood the need for extreme neatness, precision, and adherence to a large collection of seemingly pedantic rules, but I could see it wasn’t something I would enjoy doing. Computer-aided drafting offloads a lot of the worst aspects of the work onto the computer, but it’s still a bit too rigid for my tastes. Still, the idea of constructing solid objects in 3D space is really interesting and I wouldn’t mind doing it for fun.

Later in the day I have yet another a BASIC programming course. As I suspected, this class does not require any calculus. Or trigonometry. Or algebra. Or any math at all. Given the depth of the material, this class might be more aptly titled, “The magical computer typing box for babies”.

The computers used in this class are absurdly primitive, even by the standards of the day. None of them have screens. The machines must print everything on broad pieces of tractor-fed paper, which spool out of the top of the machine and into a wastebasket. Imagine you have a test program:

40 GOTO 20

The machine feeds an extra blank line whenever you type. (Or perhaps you must feed another blank line in to push your most recent line to where it can be read. I can’t remember now.) The simple act of typing in the above program will waste over 100 square inches of paper. I giggle when I use the machines. It’s so preposterously decadent to burn through reams and reams of paper like this, particularly since so much of it is blank. It’s like writing your six-item shopping lists on chest-sized pieces of poster board. And then throwing it away when you get to the store.

This brings my total count of BASIC variants to six, although I hesitate to count this one. All of the other flavors of BASIC I’ve learned have possessed some unique language feature. They all had their own way of doing graphics, and a small number of them had sound. This machine doesn’t have either. It’s not a variant, it’s a subset of the others.

Once again I observe the divide between “programmers” and “normal people”. A small number of people here can create original code, and the rest fumble their way through by copying, guessing, and memorizing.

These courses are fun, but they’re really just amusements to pad out my schedule. I took these for my own amusement, not because I expected to learn much. The real focus of my day is in Vo-Tech, simply because that’s the only place where I can learn anything useful. (To me.)

We have a new teacher for Computer Science, Mrs. Schachern. Her name mystifies us, so we shorten it to “Mrs. Shack”, but saying “Missus Shack” is a little clumsy, so we truncate it to “Mizz Shack”. She is a good sport about this. Up until now every computer-related teacher I’ve encountered has been a man (either a middle-aged nerd or a neckbeard) so Mrs. Shack shatters a lot of unhealthy stereotypes and preconceived notions before they become ingrained. She’s young, enthusiastic, and knows her stuff. She’s probably not as knowledgeable as her predecessors simply because of age, but unlike her predecessors she’s a teacher first and a computer scientist second. This turns out to be much better for everyone. Students seem to regard her class as “easier”, but she’s not holding back on any instruction. She’s just doing a much better job at imparting knowledge. The kids love her.

Unfortunately, she’s obliged to reboot the curriculum. A lot of people struggled under Mr. B and Mr. C. If she were to pick up where they left off, she would be dooming those kids to failure. (Not that those guys left her detailed notes. Apparently she’s coming in cold on day one. She actually has a little discussion on day one to get a feel for what we know.) She can’t build on the foundation left for her. Class must start over, which means we’re doing another overview of computer hardware and history, followed by lessons in DOS. Once the fundamentals are solid, she’ll be teaching us BASIC and COBOL. Again. I’d complain, but I really don’t know what else she could teach me. She gives me free rein as long as my work is done, and I self-direct my education from there. I actually self-direct to the point where I forget to do the regular assignments, and she has to pull me into line and explain that the rules still apply to me and I still need to do the work like everyone else. I’m already getting a lot of extra privileges, and I know it. I begrudgingly admit she’s right and set aside the time to do the standard assignments. They’re trivial and don’t eat very much of my “muck around with graphics programming” time.

One day I’m leafing through a book of BASIC programs. This isn’t a book from class, this one is out of the library. In it, I find an odd little bit of code. It shows how to make a grid. Kid’s stuff. Then it skews the grid, which I notice forms the illusion of perspective. That’s a neat trick. I’ve always messed about with 2D graphics, simply because that’s what videogames looked like. Then the program does something very, very strange. In one line, it does something to the position of the points on the grid, which magically transforms this grid into rolling hills. It reminds me a great deal of those pictures from Art and the Computer that have always amazed me.

What is this one line of code that does this magic? Sine? Cosine? What are these things?

So begins a long fascination with making graphical terrains. I don’t have any polygon-drawing tools here in BASIC, but I do have line-drawing tools and flood fill. I fiddle around and figure out how to find the center of each square and fill it with color. It’s a horribly inefficient way of drawing the warped checkerboard from a graphics programming standpoint. I’m done making cheap arcade knock-offs for the time being. This 3D stuff is amazing, and I obviously have a lot to learn.

At some point I should probably get around to finding out what that Sine and Cosine stuff is all about.


From The Archives:

102 thoughts on “Autoblography Part 25: The Beginning of the End

  1. Methermeneus says:

    And thus we discover why this trigonometry stuff is useful… Of course that still doesn’t excuse making it a prerequisite for a not-even-BASIC class. I think my computer repair and electronics classes didn’t even have any math requirements beyond Math I (pre-pre requisite for Algebra I). (Not programming, admittedly, but you did need a fair amount of algebra-level math in the electronics course, and the computer repair one required a working knowledge of how to use and convert binary and hex.)

    It’s nice to see evidence that a good enough teacher in a field that actually interests you can get you to do the busywork. It’s that direct reward, “If I spend five minutes on this crap, I can spend the rest of the day on the fun stuff!”

    1. MrPyro says:

      The idea behind the Mathematics requirement, as I understand it, is that maths is supposed to teach a lot of concepts about logic, which is a core computing concept. Obviously you can be good at logic without having the maths education (as Shamus is proving here), but when you’re doing an admissions-type scheme it’s easier to require a good maths grade.

      Also, if you do get into more advanced computational theory it gets very maths heavy; things like pattern recognition and neural networks, for example, have a very mathematical focus. Even database stuff is easier to understand if you have a solid knowledge of set theory, and obviously pretty much any program will probably use Boolean logic.

      1. Lanthanide says:

        At university the requirements for the computer science papers was at least 12 points of mathematics or statistics and must include the 6 point paper Discrete Mathematics, which was about logic-y stuff and such like.

        So I did stats 101 and discrete mathematics.

      2. Sleeping Dragon says:

        Yeah, however, as we can see, you can get a good part of the way without going maths heavy. I can’t really say for sure since I’ve never talked to the people who establish this stuff but I think in my country there is, or at least used to be a few years back, this notion that “computers do stuff with numbers so they must be maths.” I mean, you can either go to a maths-computer class where they will teach you some basic programming stuff or you can go to a non-maths-computer class where they will teach you stuff like “how to move files in windows”, “how to change a font in word” or “how to find things with google.” In all fairness the “non-maths” computer classes may have changed a bit, personal computers were just about becoming popular in my country when I was in high school so a lot of this stuff was indeed new to a lot of people.

        I wonder if, in the countries where you do pick individual courses in high school, it wouldn’t be smart to offer an alternate route to “maths, more maths, computers”, something like “computers, see you need maths to go further in this direction so maths, more computers.” I mean, if someone is really into it they won’t forget what they’ve already learned about programming and they’ll have motivation to learn the math part…

        1. MrPyro says:

          There is a big difference between teaching how to use a computer and how to program, much as there is between learning to drive and being a mechanic.

          But yeah, you can get a long way doing something like web programming in PHP* without needing much maths beyond the algebra level (and that’s mainly for the concept of variable assignment).

          Computing (at least in the UK) has quite a big split in how it is taught depending on whether you’re going for vocational training vs academic education. The academic education side tends to focus on the underlying principles of computing, and concepts like natural language processing, but at the expense of practical fundamentals like how to connect to a wireless network in Windows. The vocational training covers programming fairly well, but the focus on just learning programming as a skill can lead to a lack of understanding certain concepts, like optimizing functions or third normal form in database design.

          Presumably Shamus later picked up some slightly more advanced maths, as I know his 3D projects require an understanding of matrices and vectors.

          *this is not being disparaging to web development; it’s just an example that popped into mind because I’m currently surrounded by web developers.

        2. Math says:

          As stated above, the maths really helps, and it becomes quite difficult to learn more complex mathematics (Matrices, Vectors, Complex Numbers, Circular Trigonometry) without a good level of maths. Especially in 3-D graphics and Physics. To understand Ballistic Motion (So anything thrown or shot, or jumped that is expected to fall), you need to understand simple functions, and paraboloas, and if you involve time, you need to understand some parametrisation, and so it goes on. The maths is really useful and neat-but if when you’re learning it, you don’t have a natural aptitude or curiosity about it, then you might skip it, and then have to learn it later (As Shamus alluded to at the end of his post).
          It’s really easy to say: I don’t see a need or reason to do this, and avoid learning something, but in the end, this is a failing of the system not showing students the pathway through learning, instead of a student not knowing what lies ahead.

      3. kmc says:

        I’m sure you’re right about this and it sounds like a good idea, but I can remember one class ever–it was Algebra I and we probably spent two days on it total–where we ever talked about the logic or logical thinking or anything about, if you’ll forgive me, the philosophies behind math. That’s what I always hated about my math classes, and I loved math: they only wanted to teach us tools, never understanding. They never seemed to care if any of us ever got that feeling of, “Oh, so that’s how these things all fit together!” Anyway, ranting aside, the fact that logic still isn’t taught regularly in math courses should show that those math prereqs aren’t absolutely necessary for programming. Q.E.D., I suppose.

        Also, I think it’s interesting that Shamus got the idea that it was in his greater interest to do the relative busywork of the other assignments in this class. I’m sure plenty of it has to do with his maturity level, but also, I wonder how much has to do with the fact that the busywork was still on the computer. If he had attended school in a later era, where many assignments from many different classes can be done either by hand or through some creative application of computer use, would he have made the busywork fun for himself and gotten it done?

        1. Paul Spooner says:

          “Logic! Why don’t they teach logic in these schools?”
          “My word… what DO they teach in theses schools?”

        2. delve says:

          They never seemed to care if any of us ever got that feeling of, “Oh, so that's how these things all fit together!”

          THIS! This is my single biggest complaint with ‘education.’ None of my teachers really cared about ~comprehension~ as long as you could fill the right bubble on the scantron and wasted enough time on homework.

          I can understand that not everyone will be able to comprehend every subject to the same degree, but FFS I can think of no better way to provide disservice to every child in the system than to educate to the lowest common denominator in every case.

    2. guy says:

      My comp sci class just required algebra, which does admittedly make some sense.

    3. Methermeneus says:

      I get the logic (heh) behind making math a prerequisite for programming courses to some extent, but a lot of low-level courses require very little math. It would probably be better (and may well already be implemented this way; it’s just not how Shamus indicates it was in his school) to advance math prerequisites with the level of the programming course, similar to what Sleeping Dragon suggested, rather than simply to have a high level of math as a prerequisite for entering the programming track at all. This would be more in line with how most science courses (and computer classes are generally referred to as “computer science”) are set up. For instance, at my college “Concepts in Physics” (basically, the history of physics) had no math prerequisite beyond that you not be in a remedial course; Physics I had Calculus 1 as a corequisite, and Physics II had Calculus I as a prerequisite.

      Part of the reason that having any math at all as a prerequisite for the most basic of programming classes is a bad idea is that, as kmc points out, most math courses don’t teach you anything about logic or Boolean algebra, which is the sort of math you actually need until you start programming for physics or 3d graphics (at which point you need that and trigonometry and/or calculus). In fact, while I stayed in math straight through university calculus (and Physics I and Chemistry I, if you care to count those as math courses), I didn’t learn logic properly until I took Semantics. (The class started with a crash course in logic, set theory, and Boolean algebra because the poor professor couldn’t convince anyone in administration that a class in the Linguistics department should have 400-level math courses as prerequisites. My homework for that class looked remarkably similar to that of my Mathematics-major roommate.)

  2. Zak McKracken says:

    I guess part of the reason for the requisite was that someone thought (not unreasonably) that computer science was about logic as a subset of mathematics, and about boolean algebra, and more applied, numerics and numerical algorithms for mathematical problems too complex to solve by hand.
    At least that is what computing machines were invented for, so it stands to reason to think that math will be required. Probably the person who came up with that requirement was not the same who developed the contents of that classe, and also not the one who taught it. During my school time, computer science in class turned from logic and numerics to just programming and later to “using Word and Excel” (note: not word processors and spreadsheets in general, only the Microsoft products…). I think these days it’s mostly back to programming, which is ok, but I’d like to see more of the theoretical stuff at school. Many who go on to study CS get quite the shock about the amount of number theory and really really twisted maths that they’re doing there.

  3. Kdansky says:

    That is the moment of epiphany we all had when we suddenly realized how amazingly awesome Math really is.

    1. MadTinkerer says:

      I had my epiphany when I found out about multiplication. Object volume is a thing? And you measure it with numbers?!? Like, a 3″ x 3″ x 3″ cube is 27 cubic inches? Screw number lines, let me at the hardcore stuff!

      I was one of those kids who was genuinely upset when Square One left the air.

      1. Warstrike says:

        Square one was so cool…

        Although the main memories that stuck with me are “Mathman” and the segment on why a minus sign was such a big deal that ended up with the Tacoma bridge film.

  4. Pete says:

    Reminds me of that one time I made a lil java application that would draw a spinning pyramid, made using only the java default drawing methods and a whole lot of sin/cos multipliers. I really need to get around to learning how to do that sort of thing in a way that is actually sensible/sane.

  5. noahpocalypse says:

    Typo at the beginning. ‘Wave’ should be ‘waive’.

    So… I DEFINITELY should have paid attention to my Alg I teacher when she taught us sine, cosine, and tangent last year? Oh, joy.

    On topic: Ha! Shamus is wearing a tie!

    1. guy says:

      Oh yeah. That stuff is a pretty big deal. Any 2D motion you might do in physics requires them, and it’s an integral component of lots of math.

      I mean, trig is literally entirely about using those functions in various ways to solve things by drawing/imagining triangles.

      1. anaphysik says:

        Calculus is also an integral component of lots of subjects, though at times it’s a bit derivative.

        [/is a bad man]

        1. Felblood says:

          Bad puns are integral to the study of math.

          1. X2-Eliah says:

            I think you are going off on a tangent there.

            1. Blake says:

              It’s funny cos it’s true.

                1. Methermeneus says:

                  You are all a bunch of third derivatives.

                2. Paul Spooner says:

                  I had never seen that video before. I did not understand most of what they were saying. It was still amazing. Thank you.

    2. Mrs. Peel says:

      Yes, and when you get vectors and matrices, pay attention. I loved matrices in high school – I just thought they were fun – and I gotta tell you, having really learned matrices made my electrical engineering classes SO much easier. When you have a system of seven equations in seven variables to solve so you can figure out the current in one branch of your circuit, hands-down the easiest way by far is to use matrices.

      Btw – every complex exponential can be expressed as a complex sinusoidal and vice versa. That one simple relation (Euler’s relation) is astoundingly powerful, and complex numbers (I really hate the term “imaginary numbers” because it implies that they’re not useful since they’re, like, imaginary) are an incredibly useful tool. So pay attention to those as well.

      Conic sections, though, you can just forget right away :-)

      1. Longhorn_astronomer says:

        I must disagree about conic sections. I more or less forgot about them when studying calculus in high school because they didn’t seem to be useful when compared to how amazing calculus was at solving all of these new problems.

        After that, I went to college (UT) and started to study physics. Again, not much use; sure, the path of a projectile is a parabola, but I can just use differential equations to solve for the parametrized path, I don’t have to know anything about conic sections.

        Later at UT, I got interested in astronomy. Keplerian orbits depend quite heavily on knowledge of ellipses in polar form and recognizing the difference between conic sections (is the eccentricity less than, equal to, or greater than 1?) as the difference between bound and unbound orbits. So, I had to relearn things about conic sections I had thought completely useless.

        “Even the wise cannot see all ends, and high school students are very quick to dismiss math for which they see no immediate use, making them very unwise indeed.”
        –Sort of a quote from Gandalf

        1. noahpocalypse says:

          That’s an excellent quote, though I care absolutely nothing for astronomy (and probably never will. Other planets? Great. Once I know all that knowledge, what do I do with it? Try to find more? Yeah, no thanks). I’m thinking about programming instead; I have a much more evident use for my knowledge there.

        2. Mrs. Peel says:

          Oh, I know conic sections have their uses. It’s just that I’ve never used them myself (I’m biomedical/electrical), so I’m biased. Haha.

    3. David W says:

      Yes, trig is useful for all sorts of stuff. Fortunately for you, it’s quite possible to learn without your teacher explaining it. Especially with The Internet on your side.

      I’d recommend spending the effort.

      1. Blake says:

        Agreed. Like many things in math you’ll stare at it for a while saying “I JUST DON’T GET IT! WHAT EXACTLY DOES COS MEAN!?’ but once you understand how they’re defined their uses start to appear everywhere.

        When you get to learning vector math spend some time really understanding what the cross and dot products do, they’ll make so many programming problems simpler and more efficient.
        Like the queston ‘are these two guys facing the same direction’, you just dot(guy1sForward, guy2sForward) and your answer will be between -1 and 1 with -1 being facing completely opposite, 0 being 90 degrees off, and 1 being completely forward.

        Hidden inside that though is more trigonometry as the results are curves not linear, facing within 10 degrees of each other would be dot(a, b) > sin(80) (or dot(a,b) > 1-cos(10)).

        Basically vectors and trig go hand in hand, and any time you’re doing anything with motion you’ll be needing them.

        1. decius says:

          On the Cartesian plane, draw a circle centered on the origin with radius 1. Draw the lines x=1 and y=1.

          Consider the ray from the origin that forms the angle theta with the positive x axis:

          It will intercept the circle at (cos, sin).
          It will intercept one line at sec; and the other line at csc.
          The magnitude of displacement of the segment formed by the intersection with one line will be tan; by the other line, cot.

          MANY, MANY liberties taken with the nomeclature, mostly because I didn’t bother to figure out the proper formatting.

  6. Jarenth says:

    For some reason I’m giggling like an idiot whenever I read that bit about the paper-wasting BASIC program. It’s just so perfectly stupid.

    I can just imagine Teenage Shamus smirking that smirk of his as he’s gleefully annihilating the world’s old growth forests.

    1. MichaelG says:

      Hey, I can insert an old fart programmer story here!

      Back when we first got dot-matrix terminals for our mainframe (after they got rid of the typewriter-based ones), there were escape codes for programming the character patterns. This meant you could do graphics with the terminals, by loading your own font first, then outputting the right characters.

      You could also change the line spacing to use various “pitch” on the fonts — taller or shorter lines.

      Put that all together and you could print a single column of pixels very tightly spaced vertically — and rip the paper down the middle…

      1. swenson says:

        Ahaha, nice!

      2. Scott (Duneyrr) says:

        Ugh… we STILL have typewriter terminals at my office… so much paper.

      3. SteveDJ says:

        We had 3 dumb-terminals, and a printer, hooked to the university computer. You would type several lines of code in the main part of the screen, and then type some special codes in spaces at the bottom, hit ENTER, and those codes caused the lines above to be “saved” to your file/program. But it took half a minute to do this save operation.

        Other codes at the bottom would “print” the typing above to the printer. Of course, change a couple characters, and that ‘print’ would be sent to … one of the other terminals.

        So it became quite the game — you’d be typing your program in the main box, when suddenly your screen would be wiped out by someone’s “printout”. And what you had just typed? Lost!!!

        So even though you could type 20+ lines of code in the box before saving, we would get into the habit of just typing a couple lines, saving, and then continuing.

    2. Meredith says:

      Dr. Kleiner has something like this in his lab in HL2. I always thought it was hilarious, but I had no idea it used to be a real thing. It’s somehow funny and sad all at the same time.

  7. guy says:

    Now, what you missed by not going to college was all sorts of things you could find out by looking at the API or whatever for various programming languages, but also things like how to predict what programs might consume outlandish quantites of resources for a relatively minimal result, how to not close a program (The most outragous version I heard about was having the exit button call an infinite recursion until it was forcebly crashed), and generally a lot of stuff about the best way of doing things.

    1. Van Tuber says:

      In regards to that exit thing . . . wow, just, wow.

  8. UbarElite says:

    It’s interesting that the only time you actually wanted to know trig was when you went beyond the scope of the class that supposedly required it.

  9. guy says:

    I’ve seen the Programmer/Not divide you’ve been talking about myself. It’s vaguely incomprehensible to me because it feels like there’s a fundamental disconnect that I have no idea how to bridge. I find most of the basic structure of programming languages that I’ve been learning about perfectly intuitive, and can’t really understand people who don’t automatically grasp these things.

    I tend to try and help them out, but I can’t figure out why they don’t grasp it from the explainations I’ve been given and thus have no idea how to explain it to them.

    1. Aelyn says:

      I’ve noted the difference for years, but have never really been able to put words to it. And interestingly, I noted the difference most heavily in the corporate world. I think previously there were just people into computers (say, me) and those that weren’t into computers. In the mid-90’s I entered the telecomm world in the R&D side of things. I was in a huge office building with a floor ostensibly full of programmers. You had one guy that wrote an IP stack for Doom so he could play over the internet. The guy in the office next to him couldn’t figure out why his threads were jumbling their output together in a text file. You had a guy that was heavily degreed but couldn’t really handle much more than “Hello World!” in the office next to the guy that never went to college but could write anything – and I mean anything – you put him on.

      I’ve simply decided that somewhere in the brain is a bit flag named Computer_logic. Some people have a zero, some have a one.

      1. noahpocalypse says:

        Eh, I’d say it’s a scale of 1-3. (Or, more befitting the subject, 0-2.)

        0 = no idea why it does what it does. Can copy and paste, but no understanding.
        1 = understands basic concepts, but gets bogged down in little details. This is the guy who writes bugs for a living.
        2 = this is a software engineer. He knows what he’s doing, and (sometimes) how to do it.)

        Heh. I like that. ‘Writes bugs for a living’. *snicker*

        1. MichaelG says:

          It’s worse than that. Tutoring math, I ran into otherwise smart people who couldn’t handle the concept of a variable.

          1. noahpocalypse says:

            Wow.* I guess this is another example of something you can’t graph, then.

            *Not to be rude to them, of course. Just… It seems simple to me. Interesting.

            1. SolkaTruesilver says:

              Concepts you can grasp intuitively without much effort are always to give you the same reaction when you heard about/meet someone who actually struggle and is unable to “get it”.

              Thing is, at the very least, when it comes to mathematics, you are evaluated and are simply considered math-challenged. If the concepts you cannot master intuitively are social behavior, you are considered an antisocial dork. And there is no way to grade you on that.

    2. Raygereio says:

      It's vaguely incomprehensible to me because it feels like there's a fundamental disconnect that I have no idea how to bridge.

      That’s because it is a fundamental disconnect. Some people’s brain are just wired differently and this causes them to have aptitude for different things.

      This doesn’t apply to just programming, but for anything.
      I can’t draw a decent picture of anything to save my life. Never could and not for a lack of trying either. Any human face I try to make ends up looking like a deformed caricature.
      Now take my 9 year old niece and her drawn faces – while not detailed – are perfectly proportioned.

      1. Scott (Duneyrr) says:

        You find similar disconnects when it comes to music. I’m sure we all know someone who is ‘tone-deaf’ that still insists that they can sing well enough.

        1. PAK says:

          I have a dear friend who, when she sings a capella, does a reasonable job of maintaining the right intervals and melodic contour of what she’s singing. But she’s told me she will never sing in the car or otherwise “with music” in front of other people, because she has no idea how to match pitch. The idea that someone could hear a tone and then sing at that same frequency seems to her utterly magical.

          The odd thing is, after we had that conversation, I started to think about it, and my ability to match pitch (I’ve reasonable musical talent, if not much formal training) is magical to me, too. I have no conscious sense at all of what the process is. It’s just, in my case it’s magic that I can perform, and in hers, a mystery that she feels will never be revealed to her. A very funny thing sometimes, this organ between our ears.

      2. PAK says:

        This so hard.

        “Talent” isn’t just applicable to artistic ability, but also logical, emotional, social, etc. People with a talent will always have a hard time relating to people without it, because their brain ISN’T wired without it, by definition.

        1. Raygereio says:

          I don’t really get what’s hard about it. That’s just one of those unchangeable facts of life.

          Sure it can suck if you find out that you’re not a natural at something you would like to do and the following realisation that you’ll have to do 10 times the work a natural would have to do for the same task (and there’s a pretty good chance you’ll fail anyway despite all that work) isn’t fun.
          But you have to deal with that. Living means getting used to disappointment after all.

          No, I’m not bitter.

          1. PAK says:

            Right, I’m in total agreement with you. Sorry, was that not clear?

            1. Raygereio says:

              Erm, nor was I disagreeing with you actually.
              Awkward, huh?

              1. Paul Spooner says:

                I totally agree with both of you! Just, don’t become teachers.

                1. Raygereio says:

                  Why not? Someone has to be honest with those kids and not coddle them with love, cookies and well-meaning lies.
                  Oh, don’t worry. I know I can’t teach a class. I know that’s certainly not something I’m a natural at.

                  Actually, I did send home an intern today with the message that he ought to think carefully about what he wanted to do with his life concidering that – while he has some aptitude – he has shown no drive to improve himself at all.
                  I like to think I did him a favor. Well him and everyone around him as his last nearly-avoided screw up had the potential to kill 5 people.

                  1. Paul Spooner says:

                    See! I agree with you again!
                    Yeah, definitely don’t lie to people. If someone isn’t cut out for the task, everyone is better off if they know that.
                    My point was mainly that the general state of “I’m awesome at this, but I have no idea how, and I can’t imagine why you’re having trouble with it.” makes it very difficult to teach awesomeness (or even proficiency) to non-initiates.

                    1. Raygereio says:

                      My point was mainly that the general state of “I'm awesome at this, but I have no idea how, and I can't imagine why you're having trouble with it.” makes it very difficult to teach awesomeness (or even proficiency) to non-initiates.

                      Erm, sure I agree with that. I’m not really sure how you managed to pull that out from anything I or PAK posted though.

                2. PAK says:

                  Haha, Paul. I took an extremely part-time job teaching music to young children for a while. Most of it was fun, because the bulk of it was directed at pre-schoolers and there wasn’t much emphasis on, like, measuring results or anything.

                  But the keyboard classes were rough. There were things that I immediately saw, when I was first learning piano at eight years old, that some of these kids just couldn’t pick up. On the other hand, some of the others were totally bored with me, because, yeah, they got it already. Emotionally draining, I’ll admit. Probably best I got offered a more hours-heavy position doing something else.

      3. Darkness says:

        My younger sister never got fractions. I spent hours trying to get the basics across. Years later, at her 40th birthday, I stopped by to have lunch where she was a waitress. She looked at me and said, “I get fractions now. Four quarters to a dollar. It only took me working here for 10 years but I get it now”.

        Pretty clear to me that some are wired to understand and some are not.

    3. Meredith says:

      All you maths/programming people equally baffle the arts/languages people by not understanding something, I assure you. Everyone’s brain just works differently, this is a good thing. :)

    4. Falco Rusticula says:

      I think this may have something to do with human history, actually.

      See, back when we were on the savannah, being able to do maths or programming or neural chemistry was not a life-saving ability. Being able to spot lions was. Being able to compute how to get the heck away from a lion was.

      So when we’re doing stuff like rocket science or programming, we’re doing it with brains designed to survive on the savannah, and we have to substitute modules. There are some branches of maths that actually depend partially on the motor cortex -you literally have a ‘feel’ for the problem.

      So the deal with some people being able to ‘get’ programming may be as simple as their being able to modify a part of their brain for a purpose it wasn’t originally intended for, and the people who don’t ‘get’ it have that module locked to it’s original purpose, or they’ve co-opted it for some other task that didn’t exist way back when.

      1. TSED says:

        Please explain how a detailed analysis of a written piece of literature is in any shape, way, or form relatable to surviving in the savannah, please.

        (No, I’m just curious, not being sarcastic. Honest!)

        Also: just to nitpick, but there are alternate theories that humans evolved in a swamp. Get up on hind legs so you can wade through water, etc. etc. I’m not sure where I stand on the “why are humans bipeds now?” argument going on in biology.

        1. decius says:

          Telling the story about how Gronk survived the lion, and by extension, how the audience could, too.

          That led to the arts in general; analysis of the story benefits the community in the same way that ISO 9000 compliant spear-making does.

        2. delve says:

          Have you never used a program or tool for an unintended purpose? Using a screwdriver to lever something open? Using Excel to bash together a quick and dirty HTML table?

          Some things are simply the correct shape for a job regardless whether they’re the correct tool. Specific bits of brain not excluded. :)

  10. MadTinkerer says:

    “At some point I should probably get around to finding out what that Sine and Cosine stuff is all about.”

    WHAT. Dude, you managed to get into Senior year without doing Geometry I!?!?

    On the other hand, I’m a decade later and thousands of miles away during my senior year. And maybe the curriculum changed during that time.

    Well gee, Shamus. Right now I’m far, far behind you in my own computer science self-teaching, but it does boost my ego just a little that at one point I was way ahead of you in mathematics. “Geometry”, or rather what would more properly be called Trigonometry, was my favorite subject in my senior year.

    1. Scott (Duneyrr) says:

      I’m enjoying learning Trig and Pre-calculus now that I’m out of school. My math teachers never bothered to actually tell me what sine WAS and instead just gave me a graph with a squiggly line on it.

      I never understood WHY we used sine to find out the height of a right triangle, or how pi worked, until only a few weeks ago… and my senior year of high-school was 8 years ago.

      1. MadTinkerer says:

        That’s a good point. Math was utter misery in my first (British) high school, (not because my teacher was bad but… well I’m not doing that rant again right now) but great in my second (American curriculum physically-in-Britain).

        I think a big part of may have been that Quake 1 was already out during my senior year and I was looking forward to applying the maths to programming a 3D game. Thirteen-ish years later, I’m really looking forward to applying maths to a 3D engine now that Real Life is almost out of the way and I can get some damn work done.

      2. Stephanie says:

        I had a teacher who was really good about introducing sine/cosine – she got us to draw a circle (accurately), then project out the x and y coordinates of the circle onto a linear scale of degrees. It took a while, but it meant that we had a feel for how come triangles were related to circles were related to curvy lines that she could base everything else on.

    2. delve says:

      My geometry (admittedly compressed by being an extra-credit summer school course) did not include sin/cos/tan. That came the next school year in pre-cal.

  11. swenson says:

    I’m still just jealous you had any programming classes in high school at all. The sole computer classes in mine were a very, very basic computer class that went over things like typing and Microsoft Office* (despite the fact that A) we had computer classes every year in middle school in which we all learned that stuff already and B) I entered high school in 2006. The most computer illiterate student in the entire school undoubtedly knew how to type and use Microsoft Office without ever having been taught it.) that I only managed to get out of because I dual-enrolled in a computer-related college course my junior year, and a drafting course. I considered taking that one for the same reason you did, it had computers in it, but ultimately I knew drafting really wasn’t my thing.

    The dual-enrollment thing was what got me through high school happy and satisfied, though. Although my school had very, very few “extra”, non-required classes (there’s a word for that sort of class, I just can’t think of it right now!), they were willing to pay for students to take college classes. I got into that as soon as I possibly could, my junior year. Unfortunately, they only let me take one a semester, and two my final semester–if I’d been able, I would’ve taken two or three every semester, as by that point, I didn’t have very many required classes left.

    The best part, though, is that they also gave me an hour off of school for every class I took! :D In practical terms, that meant no more boring assemblies or pep rallies!

    * (to be completely fair, I believe they also went over things like the basic parts of a computer, maybe some of the history of computing, things like that, but it still was a very boring and useless class, especially to anyone who, like me, knew even a little about computers. The end of my senior year, my beloved calc teacher told me she was going to have to teach that class the next year, and showed me the curriculum the school board had for the class, and I began to understand why the class was so boring–the curriculum was terrible! It had to have been in use for about twenty-five years. It even included a segment of typing on typewriters, although I suspect previous teachers of the class just ignored that part.

    I did feel happy for incoming students to that class, though. She actually had a computer science degree, unlike the last teacher, and would probably be able to work around the awful curriculum.)

    1. Bryan says:

      Elective. :-)

  12. Zukhramm says:

    Now hate trigonometry just as much as everybody else but calling it “the end” is to exaggerate.

    No, I don’t hate it, I think I really learned it building an automated turret in g-mod.

  13. “The magical computer typing box for babies” sounds like something the Heavy Weapons Guy would say.

    1. noahpocalypse says:

      Haha! I can totally hear that! That would be awesome!

  14. Daktylo says:

    I still remember attending a computer class in HS where the teacher was in over his head. I believe he was a drunk, and primarily a soccer coach, but they brought him in thinking he could bring order to chaos. It was another one of those glorious BASIC classes, and people had a hard time grasping the concept, including the teacher. I remember he tried to punish me and a buddy once with programming “that thing” to print some punishment statement 100 times. Apparently he didn’t realize that a simple counter in the program could accomplish this, but I do remember the wasted paper. I always was amazed at the squandering of all this technology on people who didn’t appreciate it.

  15. SteveDJ says:

    I think when you were describing that magic line of code, you might have expanded too much? I suspect the line was more specifically “SIN” and/or “COS”. Did you even know how to pronounce it as sine back then, or even know that COS was in fact cosine? :-)

    1. Shamus says:

      I don’t remember what the book said, but it’s reasonable to assume it said something about sine and cosine when it offered the program.

      I’d noticed SIN and COS in the past, and I’d made loops to plug numbers into them, just to see what they did. As far as I could tell, all they could do was “spew out random values between 1 and -1”. I knew they had some higher math application, but I never had any idea what it was or that it might be SO AWESOME.

      1. RTBones says:

        I am reminded of my Calculus III class in university – I had a professor from India who pronounced “sine” and “cosine” as “sin” and “c-augh-s”.

        I am also reminded of a Calc teacher my senior year (of high school), who, if nothing else, taught me the Triginometric Cheer (so that those of us who were geeks could fit in with the sports crowd):

        Secant! Tangent! Cosine! Sine! Three point one four one five nine!

        1. Shamus says:

          Since I saw the programming terms long before I learned the math, I STILL pronounce them as “sin and caus”.

        2. PAK says:

          @ RT Bones: When my dad was a freshman engineering major at Purdue University in the early sixties, the senior engineers would haze them by forcing them out of bed at three in the morning so they could shout the Trignometric Cheer from the middle of campus.

      2. 4th Dimension says:

        Never tried to draw that function?!?

        1. Shamus says:

          Heh. You young people. For the first several years, there were no “drawing” tools. It was all ASCII. It was only when I got to Vo-Tech that I even gained access to machines that could draw arbitrary pixels.

          And of course, it probably seems obvious to someone who knows Trig, but I actually had no idea what to do with those outputs. When I experimented with it, I made a loop that fed it whole numbers: 1, 2, 3, 4, 5, 6… which doesn’t produce a curve. The outputs do seem pretty random like that.

  16. sandrinnad says:

    [pedantic] “free reign” should be “free rein” [/pedantic] :)

    ahh basic – I still have fond memories of the self-directed program we had to create at the end of the course at my school :)

      1. blue_painted says:

        Sometimes wiktionary is just plain wrong!

        And even if it is backed up by common usage and general acceptance it is still just wrong.

  17. asterismW says:

    So wait… Why is this The Beginning of the End? Not the end of your autoblography, I hope. I’m pretty sure you have some 20-odd years of life left. And I’m also prety sure your life did not suddenly become uninteresting once you graduated high school.

  18. Anachronist says:

    Young whippersnapper!

    Actually, Shamus, that paper terminal language was BASIC. The original. The one every other BASIC evolved from. It had been around since before computers used CRT displays. My own first encounter with it was in 1974, on a paper Teletype connected via 110 baud acoustic modem to a mainframe somewhere other than in my school. Graphics just weren’t part of the instruction set. (For that matter, neither were lowercase characters!) If you wanted to do graphics, you did it by printing ASCII characters in the pattern you wanted. If you got really fancy you could do amazing things with ASCII characters struck over each other in different combinations.

    I’m surprised that such a nostalgic relic was still available and in use by the time you got to high school. By the 1980s everything was displayed on CRT, and we had graphics.

    Check out some of the early books on BASIC from the 1970s by David H. Ahl from Digital Equipment Corporation. One of the classics is 101 BASIC Computer Games (1975). I learned a lot from that book. There are some good algorithms in there that still amaze me with their elegance, such as the one that generates a random maze and draws it with ASCII characters. Or another that makes a hidden-line 3D terrain plot just by printing asterisks, using an offset method that you described.

  19. Vextra says:

    Is it weird that these posts have instilled in me a desire to actually go back to High School/College and learn what the heck you guys are all talking about? Although, its a somewhat ironic desire, since I doubt even the primitive handholding IT courses I could realistically take would teach the same kind of stuff that was par for the course in the late 80’s.

    Can anyone reccomend what someone interested in basic 101 programming should look for in a course?

    1. William Newman says:

      There are lots of choices today, because computer power has become so cheap and because so much software has been written since then. BASIC is seldom taught these days, but that’s because most people think there are better choices.

      If you are doing it absolutely on your own, it would probably work pretty well to first learn enough HTML to make simple web pages (which is rather easy), then find a Javascript tutorial that you like. Javascript is typically embedded in a web page; if you’re already comfortable with web pages, you can quickly make your Javascript programs do visible things. And since you’re presumably already using a modern web browser, you already have a Javascript implementation at your fingertips. You can also find a lot of real-life Javascript code (often doing somewhat inscrutable things, admittedly) just by poking around in web pages you visit (with “View Page Source” or some such command in your browser).

      Or if you have someone around that you could occasionally ask for help when you’re stuck on something, that’s a sufficiently valuable resource that it might be a better idea to pick a language that that person is familiar with and go with that. There are many good books and webbed tutorials for many different languages available these days, and lots of languages have free downloadable implementations.

  20. Ringwraith says:

    Is it bad that the first thing I thought of when I read the title was this track from a game with a soundtrack I like far too much? (Although I like the game lots too. A JRPG in the Wild West with many convention-bucking features and characters? Yes please.)
    That track isn’t even the best from it!

    1. Eldiran says:

      It’s probably a little more reasonable than being immediately reminded of giant hostile grasshoppers.

      Also now I am very intrigued by this game’s soundtrack…

      1. Ringwraith says:

        It does the whole Wild West theme very well, the first game’s opening theme and the fifth game’s normal battle music are probably the best easily-obvious examples.
        In fact, one of the openings of the series even uses a proper whistle, which is probably another really good example of its thematic soundtrack in fact.

  21. Anachronist says:

    Followup to my post above….

    Found it! It’s now an e-book, free online. BASIC Computer Games (formerly 101 BASIC Computer Games) by David H. Ahl.

    The programs I mentioned: Amazing, a challenging maze of arbitrary size guaranteeing one path through; and 3-D Plot, a tiny little program to plot hidden-line surfaces in 3D. If you want to see a real paper-waster, check out the Checkers game, which prints out a new board every time you make a move.

    The e-book seems to be an update using Microsoft 8080 BASIC. The original, I recall, used the original Dartmouth BASIC.

    I haven’t seen that book in over 30 years. Memories….

  22. Retsam says:

    I sort of hope that the Seven Springs story gets reposted as part of the autoblography. (I’m saying this now cause this is about the place in the timeline that it goes, I believe) That story, oddly enough, is one of the first things I ran into here and one of the things that made this site stand out.

  23. Wes1180 says:

    Each time I come to this site it sets me to wanting to do a computer science course at university. (UK)

    p.s. This Autoblography series has been really great and an interesting read, so thanks for sharing :)

  24. Jonn says:

    No, no, you still look like Alyn Tudyk.

  25. esther says:

    Its a typewriter that you can program… meep

  26. Leah says:

    I like computer just like you.

  27. Leah says:

    I bet you loved computers.

Thanks for joining the discussion. Be nice, don't post angry, and enjoy yourself. This is supposed to be fun. Your email address will not be published. Required fields are marked*

You can enclose spoilers in <strike> tags like so:
<strike>Darth Vader is Luke's father!</strike>

You can make things italics like this:
Can you imagine having Darth Vader as your <i>father</i>?

You can make things bold like this:
I'm <b>very</b> glad Darth Vader isn't my father.

You can make links like this:
I'm reading about <a href="">Darth Vader</a> on Wikipedia!

You can quote someone like this:
Darth Vader said <blockquote>Luke, I am your father.</blockquote>

Leave a Reply

Your email address will not be published. Required fields are marked *