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:
The placquard is made out of pure diamond and sapphire…. well ok, it’s actually crystal glass, but it’s still pretty epic. For some reason I can’t help but chuckle about getting stickers. I was supposed to receive a bunch of other swag but my address was changing rapidly at the time (or even non-existent, which I’m sure you can guess what that means), which mean I didn’t get some of it; this includes some sort of coat or tumbler and a sweater/fleecie. I managed to get a few MSDN magazines (which is weird since I was supposed to only get the On-line subscription…) which was pretty cool. But I digress! Back to the site.
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!
Have something to say about this post? Comment!
One thought on “Missed bc-programming.com’s birthday!”
Congrats on the recognition.