I managed to miss bc-programming.com’s birthday last October, at which point it turned 3 years old.
Some might wonder why I started the site. The original intent was pretty much exactly what I use it for now; A place to post whatever I want (within reason, of course) mostly centered around programming, and more importantly provide a good central location for my “web presence”, and a place to put my various software up for download. It had a few speed bumps when I first started. For example the old Main site looked freaking terrible. This was resolved properly: I sat down with a piece of paper and sketched out exactly what I wanted it to look like, and then made it look that way. The result is what you see on the main bc-programming.com page, and it looks exactly as I imagined. Over time I’ve been able to add new buttons that link to my other online presences, such as my deviantArt account, github, etc. I’ll admit I have made a few minor tweaks and even withheld some things from the site for a time, but then I eventually got sick of it; I mean, take, for example, MLP content; for a while I kept it “secret” and didn’t let it enter this site at all. But then I realized- this site is supposed to be mine; I might show it to potential employers, but it’s not supposed to be a gigantic resume, and putting stuff like that- as long as I don’t go overboard- seems like a perfect way to personalize it, so that’s what I did.
I never expected my blog content and community contributions over the previous year or two to fetch me a C# MVP Award, and am still sort of surprised that I won it; it’s a case of feeling like a Phony, which I’ve actually learned is a sign of a good programmer, which has the impact of making me think I’m a phony phony and that I don’t actually feel like a phony at all but am in fact a phony at being a phony because that is a sign of a good programmer. Then again, so is understanding recursion, which seems to be at play in that particular set of feelings at least.
I’ll admit that I almost feel having a C# Award makes it more difficult to get jobs in other technologies. A lot of people translate “Microsoft Valued Professional” to “Microsoft Shill”, which makes me always feel weird when I apply for PHP/MySQL related jobs, or jobs for other technologies, administering servers, or Linux related tasks- even though I can work with a bash prompt a lot better than I can powershell, despite the latter actually working via the .NET Framework. Even jobs looking for .NET experience seem to undervalue it, which isn’t unfair but I mean come on there are only two people in this city that have one, and maybe a half dozen on Vancouver Island. Also it’s a nice award:
I don’t think I’ve ever explained- in a public post such as this- where the name came from. BC_Programming is a short form of BASeCamp Programming, which is the “name” I’ve attached to my software and products and is basically my “brand”. The logo is a mountain, and the original slogan was “climbing to the peak of programming perfection”. The original image, slogan, and even name, is not attributable to me- they were actually conceived of and created by my high school CS teacher, who also created the original various images, that I made some tweaks and changed to resizable vectors using Adobe Illustrator and used in new logos; the name “BASeCamp” came from my two main languages at the time, BAS for the extension of Visual Basic modules, and C for the C extension. Now, thankfully, the C could very easily stand for C# and the .bas could be said to mean VB.NET, even though I hardly ever use it. Either way, the name and the capitalization makes it unique. I’ve re-adapted the name and even created a “subsidiary” label that I use for my “professional” projects, such as BCJobClock, which I call BASeCamp Software Solutions, because it sounds enterprisy.
The creation if this website- and the domain and content- was almost a no-brainer; even though I am really just one guy, and it could be called “deceitful” to make a site such as this, I make no effort to hide the fact that the entire site is not really a huge corporation run by multiple talented individuals but rather it’s run by one person who may or may not actually be “talented” but never over-estimates his own abilities. After all, overestimating my abilities and assuming I’ve reached the “peak” of perfection will do me and my software a huge disservice; assuming I did things correctly precludes the introduction of better algorithms and ways of doing things. If I can look back on a project and say “yep, that was well architected” it’s not because it was well architected but simply because I had more learning to do. Parts of a project can be well-made and designed; for example, BASeBlock I feel has a rather good framework in place for adding new features via scripts or dynamically loaded assemblies, but it’s current maintenance of gamestate is done with a enumeration and switch blocks in appropriate routines, when the ideal would be to use an interface definition that defines a state with Run and Draw routines and provides the appropriate game state information (a BCBlockGameState class is used for this) and each state- a menu, playing the game, paused, etc could implement that one state, and change the state as needed. Which would make the entire thing more customizable. of course it’s not impossible to add this to the game now, but it would require a major refactoring and a lot of it would require seat of the pants debugging of a huge modified codebase spanning several dozen files and changed routines, as well as refactoring of fields of the main form that has the switch statement to move fields that each case block uses to the new interface implementations. It’s an overwhelming task.
Thankfully, my re-implementation of “BCDodger”, cleverly named BCDodgerX (the X stands for Xylophone, because Xylophones are cool, they are like steel drums but they don’t break your fall as well), uses interface-based state management, which I’ve found to be highly extensible and powerful- new game states are a lot easier to add, since I just need to add a class and a place that uses the new state (be it a shortcut key or somesuch); and additionally, temporary states, like the pause state, simply store the current state, and then revert that as the current state when finished. It also allows for chaining states (the BCDodgerX introduction screens do this; one intro screen is told to follow up with another introduction screen, which follows with another, which follows with the menu screen, etc).
Some of my earliest Programming endeavors have been lost in the sands of time. Also because I deleted them. My first ever programming project was a Program called “Colours” which was a Visual Basic 2.0 application that provided various scrollbars and allowed you to get the Hexadecimal “web” colour from that color. I deleted the project to save space on the 50MB drive I had at the time (and yes, this was in fact 2003, but my computer was a 286 at the time). I’ve regretted it a few times since. I do still have my second project, which is a game called “BlackSpace” that is laughably bad both in terms of source code as well as gameplay. I lost a few very cool projects, such as a chess game with AI (and a very cool “engine” if you ask me) a cardhandling library that used Windows cards32.dll and was used for a “Go fish” game; a Full-featured Text Editor that implemented Syntax highlighting and multiple document support, which I actually used as my text editor even, and a few low-level projects such as a way to move a VB6’s forms menu to a toolbar much like other applications, which allows it to be put in a Coolbar/Rebar, which required quite a bit of low-level code and probably a good three months of arduous hacking and research, particularly important since I didn’t have an internet connection and was basically cut off from the rest of the world for that time. Some of my bigger projects I was able to rewrite- BASeParser, for example- the VB6 implementation works as far as I can tell since I use it for a command-line expression parser that I use semi-frequently, but my .NET rewrite seems to have a few minor problems that I can’t be bothered to resolve at the moment. My favourite older project is my “BCFile” project, which I use in BCSearch; this basically creates a complete, Object-Oriented File-Access Library for use with Visual Basic 6, which didn’t have a Object Based method for such tasks, and instead relied on either the old BASIC statements Open "Filename" for Input As #1 or used the VBScript FSO objects, which were also rather limited. Unfortunately since I’ve moved to C# for desktop development (and thank goodness for that) I no longer really have a use for it, so even though it was written as a reusable library I only actually used it once in BCSearch, which is in and of itself rather buggy to the point of almost being unusable.
Anyway… Happy belated Birthday, bc-programming.com! Here’s hoping I can keep posting good content, Programming information, classes,and software that can help others for years to come!
So I recently got thinking about why the heck we men get facial hair. I mean, what purpose does it serve? if I let my beard and moustache grow, it would basicaly just mean I had a giant pillow stuck to my face with cookie crumbs and tangles in it. Eating becomes a game of trying to thread a needle by sticking a fork in a specially crafted mouth hole in the web of hair.
Of course, nobody let’s their beard grow. Except hippies. But they don’t count. Those that do keep beards and moustaches do so more for fashion and appearance than any functional purpose. Like noserings, I’ve always thought of a full beard or moustache as putting one at a disadvantage, because it just gives people something to pull on.
Some may wonder how this doesn’t apply also to a head of hair. Well, hair on our head actually evolved to protect the environment, see if everybody was bald and had a shiny head, the amount of energy being reflected off our chromium domes would add to the greenhouse gas effect, or something equally badly thought out. More practically, it keeps our heads warm. Moustaches don’t really do anything, aside from get in the way. Beards don’t keep our chins warm. Besides why would we need our chins warm anyway. Surely we could go for furry hands or furry feet instead.
This brings us back to my original idea: at this point it’s just an appearance thing. I guess it’s just a vestigial result of our evolution. (Or, for theologians, I guess god decided men should have hair on their faces for no particular reason). It’s interesting because you can look totally different when you shave a full beard or moustache to the point where people might not recognize you. The latter is true too but only if somebody hadn’t seen you since you started to grow it; if you deal with somebody daily you won’t notice the slowly growing beard and/or moustache. But it can also be used to determine if somebody is evil. a “hitler-style” moustache is not really socially acceptable, which I always thought was a bit weird. Are people with the same colour eyes as him also socially awkward? well, not really. But also if I was to give myself some goofy beard and/or moustache appearance, and take over the world gruesomely, aside from being an epic reign of terror, surely the future would then shun people using my funky beard and/or moustache style.
Anyway I forgot where I was going with this. I wonder if maybe people with big moustaches have like extrasensory perception, like cat whiskers, so they know that if they are going head first into a narrow area their entire body will fit because their whiskers do. I doubt that, though. our hair is critical to our sense of touch everywhere but the front of our hands, really.
One could argue that our fingernails aren’t useful either but they serve as a counterweight on which the fleshy ends of our succulent fingers grip objects. Without the nail, most of our digits would just have flabby shapeless blobs on the ends.