I generally consider a fair deal of my knowledge and belief to be separated into thesis, antithesis, and synthesis. (I even wrote a song about it!) On my mind recently has been the most trivial example in the cosmic sense, but one that proves there are many more smaller revisions between these three stages. I speak of Programming. When I started learning, the resources on the Internet sucked. They were mostly C with classes, and pretty simple and dirty. Same went for web design. The class I took in middle school just covered where to find lots of free animated GIFs, and how to get them into FrontPage. CSS might not have been invented yet, but I definitely didn't know about it if it was. I gradually learned better C++, after screwing around with Python, Ruby, and a few hacker games here and there. Learned a bit of the STL, some principles of good design, how to be a good programmer. I have a few books that go in great depth on that. I've been trying to learn to develop games the last couple of years. See first, I looked at these tutorials using the Simple DirectMedia Layer, from Lazy Foo Productions. They are simple one-offs, mostly procedural. I was really ecstatic when I found the Dev Hub tutorials, because that was the first time I ever really used OOP in a project and learned to put things together in a system. But the examples were broken. The graphics tiling does not work properly. I spent a lot of time trying to fix this, stepping through it in GDB, checking variable values, and I couldn't figure it out. Things seemed to be happening the way they should of, but my characters were walking through a void. I finally decided yesterday that this whole thing was stupid. The program is too large to understand easily. Every time I come back to it, I have to orient myself on each separate class all over again. It barely does anything, rather it is built to be general. So I've decided I'm just going to code simple demos for each concept I have. Make one for just getting the tiling right, then parallax scrolling and a camera that keeps panning right, then add an entity, then jump around. I read somewhere once that Linus Torvalds was screwing around with hardware interrupts or something, just really low level stuff, and changing one pixel on his screen or something like that, and Linux eventually evolved from that. The story was probably apocryphal, but the basic concept stands. I guess.

More importantly, I found an article on prototyping a game in seven days. The most important rule they said that struck me was "Nobody Cares About Your Great Engineering." See, this is the revision in my belief that's come about. I was having so much trouble coding things for so long, worrying about having perfect code. Maybe it helped drive me for a while. I had this unattainable ideal that I wasn't even fully cognizant of. Even with full knowledge of all the modern programming paradigms, project management, x86 assembly, compiler design, memory implementation, formal computer science, and random vaguely related branches of pure mathematics I probably wouldn't know what that ideal was, and I don't come close to having that kind of knowledge. Nor do I want to; I'm pretty sure the knowledge of esoteric mathematical formalisms is directly correlated with sexual impotence. That's what really happened to John Forbes Nash in A Beautiful Mind. But these guys that wrote this article, they threw games together in 7 days each, and for one thing, they faked the fancy math and code if they didn't need it, and for another, they didn't waste time trying to earn a Nobel Prize for Programming. Now, they didn't exactly make Cave Story, but they had some nice concepts, and the graphics were decent. And they didn't have to collaborate with anyone. Instead they got together this whole team and decided everyone would compete. So from now on I'm going to be a lazier programmer, and work at it a bit more often.

Another interested article I found was on Data Oriented Programming. It began by decrying the evils of OOP. That's pretty good to me. Now of course, they said to continue thinking in OOP a bit, and said it was still good for a few things. Not many. Just GUIs really, but this is a game developer. I haven't gotten to the really technical details yet, but basically you have an input and and output, and you're writing the part in between. Now that I think about it, that might be a little like functional programming in the vaguest way. Taking a function and transforming it with another function. But instead, you're doing that to skeletons or something. He keeps saying something like "bake what you need in advance" but I haven't heard that term outside of 3D modeling, so I'm pretty confused. Unless that's what he meant. Also, he said the same as those other guys, that speed is the goal in coding a game. It just needs to be reasonably bug-free and fast, but not necessarily bullet-proof. Save that for flight control systems, he says. Which made me think, maybe the reason computers slow with age is because they've encountered more cosmic rays. Or maybe it could be the actual electronics aging in of themselves. Usually I used to think it was all software-related, like some problem with the master file table in an NTFS partition. I got this laptop running Fedora about a year ago, so I'll wait and see if it slows down the way Windows does.

I also watched some of these on-demand art instruction things from ConceptArt.org. Jason Manley was talking about color theory, and he said that if you relax your eyes just right, then you'll start to see colors more pronounced in everything. Carl Dobsky thought it was like being on drugs. I wondered which drugs they meant, but I think Ecstasy might do that. I haven't gotten to try it. I went outside today and tried to see color. The roads were slick from rain, and they looked a deep royal blue and purple, and a bit teal in this one shadow. The sidewalks had a color between red clay and red wine, but only when I could see the color of the roads strongly enough. Some things made it hard to see, but the main trick is to not have a single real focal point. It's tough to balance, because you need to focus on objects a little. If you hold your hand out in front of you, just look at it, you might notice you're actually focusing on a particular part of your hand. Creases in your fingers, or a nail, or a tendon. We tend to shift our focus between several small points, rather than taking it all in at once. So that's what I'm trying to do now. Maybe next time I'll actually break out the paint.

I've really got a lot of work to do, though. And no will to do it. And all these hard links are a real bitch. Plus, I don't have any special life-changing advice or personal epiphanies to share today. Brush your teeth, drink your milk, stay in school, and believe in yourself.