This Prepared Me
Today I worked on my embedded systems course. There was an introduction to C, and then a study of I/O ports on the LaunchPad (with the TM4C123GH6PM microcontroller, identical to LM4F230H5QR). Quite a bit of everything was review. I already know how to program in C. In fact, it reminded me of when I was at CU.
I was a freshmen and they were trying to determine what classes I should be in due to my self involved experience with programming and computers up to then. A guy sat me and a couple others down and asked what we had made prior to college. One kid said he had created a simple computer game using Visual Basic (this was before .NET was a big thing), I can’t remember what the other kid said, and then I said:
Well, I was intrigued by memory management systems, particularly in storage, so before garbage collection. If you have two data structures and they are identical, wouldn’t it make more sense to store a coordinate, such as pool 3, item 7 to those structures throughout the code. Then when a data structure is changed, the new value is compared to all the other items in its respective pool and if one is found, the new coordinate is returned. If it’s not, a new item is made and that new coordinate is returned. In this sense, I would have pointers to a large image file, or more, floating around. This sea of pointers would then make it so any particular space of memory wouldn’t be duplicated. You could easily store the number 14000 once, and the point to it everywhere else. On top of that you could set an item to be mutable, which changes the pointed to value for all the pointers already pointing to it.
He asked, “Did you implement this?”
I replied that I had attempted to using template classes to do the basic functionality once, but using different types and structs for each template.
He said, “Okay, you’re going to go into data structures.”
But, I was a silly little person, and decided that because I had never gotten a formal education in programming any particular language, I worked that I maybe I missed something a formal introduction might give me. So I opted for the traditional intro class.
Luckily, the TA decided that he’d form a Moose Group: students who were in Introduction to C, but were more advanced than the class (but not yet in the higher classes). So I was part of the Moose Group. The project I chose to implement was a computer game. It was very ambitious, too ambitious really.
It’s okay though, because it never had to be finished.
Although, when the TA read my submitted code he told me he had no idea what it was trying to accomplish. This of course was right before I was transported by the cops.
Life is strange.
So anyways, the lab I just finished was the supported input/output pins on the LaunchPad. It’s really quite interesting. Something new to me was known as bit-specific addressing. It’s a feature for (one of) the registers. It’s not supported on all registers, but the idea is that you have a base address (for the data on a particular port) then you add powers of 2 together (in C, these are most often specified in hexadecimal notation) for each pin you want and add that to the base address.
Using that you can target particular pins and toggle them (^=), set them (|=), and clear them (&[~]).
Next up is module 7, design. Ninja said that it was a mishmash of subjects. We’ll see. It looks more heady and abstract. I want to know when we’re going to use the rest of the kit, we’ve only been using the LaunchPad switches and lights so far.
A nice thing was that Ninja had trouble understanding a piece of programming in C for module 6. When I got there I was able to point out where the variable was defined, and the purpose of taking up 3 assembler steps to perform a seemingly unnecessary assignment operation (so the port clock could settle). It was nice to be able to lend my ‘expertise’.
I was thinking about my life, and my blog, and my direction. I can’t just wait for a direction or something of interest to just come to me. That’s how I get super interested in things for a week and a half, and then go, meh, and forget it. Now, I can work in week and a half segments flitting between multiple projects. That’s not a bad idea, but they have to be the same projects.
One thing that occurred to me was that I kind of see my past as one big waste. That I just wasted so much time doing things that didn’t matter. Like, if I knew what life would be like now, I would’ve never taken high school as seriously as I did. It’s funny, in some ways many of the kids already knew that, and *I* thought *they* were missing something.
Or, working on my invention. I went through a small inheritance about ten years ago working on that, and at the end of the money I had nothing to show for it. Well, hindsight is 20/20.
Or my love life. I spent a large part of my adolescence being very passionate, incredibly passionate, about everything. I was too hardcore, I didn’t let things just happen. I was attracted to people, being gay, that couldn’t be realized or reciprocated. Instead of letting go and seeing what I COULD do, I was completely engrossed in what I COULDN’T do. I got the experience of dating girls, but they were girls I never really ‘loved’ significantly enough. I missed out on a lot of things because of how intense I was about everything. And now, I can’t get it back.
I spent my early twenties doing stuff that just hurt other people. I was an asshole. Everything I did was an exercise in borderline behavior, completely dysfunctional. In the end all I really ever did was hurt people. I’m sorry.
I spent my late twenties completely petrified with extreme chronic 24/7 anxiety. I couldn’t do anything. I felt empty, powerless, dull, void, with no ability and no will to live for two and a half years. I literally had no will to live. Not much of a way to live huh?
It’s funny, I look back at very specific moments in my life and say, “There!” That was the point where I had control over my life and I was happy. Like the Christmas right before I met Tommy. My life was almost perfect right then, I was just getting the foundations in for my programming business. Those two weeks were the most balanced and stable weeks I ever had. And then the night of sushi in Denver with Maus and Tommy was probably the most exciting moment in my life up ’til now.
And then Tommy was gone, and I had nothing to show for it except a better understanding of how unchecked borderline behavior can wreak havoc on your life.
But… you know… life is never a waste. I was thinking about what I heard at Tom’s funeral, “You can learn from everybody, even if it’s how to not be like them.”
I’ve learned things and had experiences. I could frame them in a much better light than waste, but preparedness.
Learning to self-teach myself at a very young age prepared me for a self-enabled education. Learning to program at a young age and play around in the world of code prepared me for the skills necessary to do what I want with computers. I’ve learned that things always change over time, that rejection doesn’t have to be internal, how people can become a fester in your life, how I can be manipulated, that when you work on things consistently they grow, that I have to do things before others will care about doing them, and so on.
My life experiences, my smallness, my delusions, my memories of books and televisions and pain, have prepared me for the situation I find myself in now. I’m turning 33 in April, and I have the ability to either learn lessons at random as I have been doing up until now, or to direct my own education. To direct my own abilities with the experiences I have had up till now to form a better picture. A more fulfilling picture. I’ve been preparing for this moment for a lifetime.
Funny. I didn’t even talk about what I was thinking I could do with the blog. And now I’m out of time.
See ya later!