Michael Burgwin on LinkedIn

 Some people, when confronted with a problem think, “I know, I’ll use threads”, and then two they hav erpoblesms.

BC-Programming Downloads
BASeBlock
C# Bat & Ball Game
Current Version:2.8.1
BASeBlock 2.8.0
  • fixed crash bug on exit when statistics folder is missing from data folder.
  • Added Deflector. This is always available when the paddle is. Press and hold shift to use it. It will cause Collectible Orbs to bounce off the paddle and powerups will explode. This is useful for avoiding certain power-ups. Be warned that the paddle will take damage from the resulting explosion.
  • Added AdvancedLevelBuilder. Still buggy since it sometimes chooses blocks that aren't used or are buggy in some way.
  • Added "QuadSpinner"enemy. Similar to Laser Spinner, but shoots one from each side. This enemy is still being tweaked.
  • Added PolygonObstacle; This is as of yet not used. It is essentially a polygon that will be "moved about" by any ball impacts. I'm deciding what to do with it, and in what ways it could work. (destroy blocks it hits or something).
BASeBlock 2.7.1
  • Fixed a crapton of crash bugs related to some of the refactorings made in 2.7.0
  • changed some image content.
BASeBlock 2.7.0 New update!
  • Added "WoodBlock". This block can only take damage from hits that occur on it's side. Logic being you need to hit it "in the grain".
  • Tweaked the drawing of "Cracked" blocks to work more generically. This also fixed some visual issues with the old method.
  • Fixed a few crash bugs. Also re-added a music file that was missing from the installer.
  • Majorly refactored the internal event system. Now the events use the "C# standard practice". This has no outward effect, but I also fixed a few race conditions while I was there too, so that's a win as well.
BASeBlock 2.6.0 This version represents quite a bit of work. I'm certain I've missed a lot of features that I added or changed, because there was a time I wasn't really logging all the things I changed or added. Changes: (takes deep breath...)
  • Tweaked Splash Screen/About box. Assembly view (when used as about box) now sizes properly, and displays icons for each item, too. It also is enabled for sorting User size.
  • rewrite the SandBlock, and made it visible in the Editor. Note that it still works a bit oddly, and has some clipping issues, but it works much better than it did previously (which is why it's now visible, duh)
  • Made some fixes to the Editor, and fixed some attributes and assignments.
  • Rewrite the LaserShot, so it can now bounce off blocks.
  • refactored some parts of the editor. The outward appearance is the same but the code is a lot better to work with now.
  • Added Game Statistics. These are not yet displayed anywhere, though. (They are tracked per levelset as well as globally).
  • Added bosses. These are not yet present in the game's default Levels and capabilities, however. To check it out, use "eyeboss" as a cheat. The cheat menu is accessible with Control+Shift+C.
  • tweaked Highscores being shown, now it will go faster if the mousebutton is pressed, similar to the score display.
  • removed the original startup sound (level startup) now the only two are the various Arkanoid reinstrumentations.
  • added numbounces field to temporary ball behaviour: ball now bounces a given number of times before suiciding itself. Naturally, this defaults to 1, so that all the code that existed before works the same. Used initially for...
  • LaserSpin Powerup, and tweaked corresponding Terminator Behaviour. Ball moves slower and shoots lasers faster, which is fine since the lasers bounce, as indicated before. Has a rather negative impact on performance....
  • Fixed the SoundDataListEditor again.
  • Lasers also bounce off of the Polygon blocks- other changes to the core classes have increased some of the capabilities with regard to Editing.
  • Added SwitchBlock, which allows setting a GroupID. when all Switches of a given GroupID are all on or all off, the Active or Inactive Trigger ID's of each are fired.
  • Allows Dropping of supported files on the Editor to load them
  • All destructive operations (that would reset or replace the active LevelSet data which has not been saved) now have a confirmation dialog.
  • Added a drop down for Undo and Redo, to Undo or Redo to a given stack position. This might be in the previous version but I seem to remember working on it recently.
  • Fixed "QueuedSoundManager" which is used for some music and the introduction sounds.
  • Selection in Editor uses rainbow hues, to make it easier to see with some block colours.
BASeBlock 2.4.1 Changes:
  • *Updated to Visual Studio 2010, and updated project to use .NET 4.0. This is something of a major change user-side since it means you will need to have .NET framework 4.0 installed. If you do not have this, it can be downloaded here.
  • *Tweaks to Editor and associated Block interfaces to work better with Polygon objects.
  • *Fixed some issues and race conditions that cause InvalidOperationExceptions.
  • *Tweaked file handling. LevelSetBuilder interface now gets a IWin32Window Owner parameter so dialogs and messageboxes they show can be given the proper location in the windowing finite state machine of the OS. End result is that there no longer appears to be that annoying issue whereby dismissing a dialog opened from the editor will focus the game window instead.
  • *HOPEFULLY fixed the issue surrounding the previous addition of Game Explorer parts.
  • *Update System re-enabled. Turns out it was working fine all along, for the most part.
  • *General improvements to the update functionality.
  • +Added PolygonBlock, as well as an EllipseBlock. These still do not work properly with the GameCharacter, but balls bounce accurately off of them.
BASeBlock 2.4.0 Changes:
  • *Changed code to be more framerate independent.
  • *Fixed PowerupcycleBlock. It now works properly
  • *Fixed tetherblock to use Game-based timing rather than absolute (pausing the game pauses it's timer)
  • *same as above, for VomitBlock
  • +Added Templates to the editor. Still a work in progress. Add .BLF files saved with the "Allow use as template" option checked in creatorproperties to %APPDATA%/BASeBlock/Templates folder
  • *Fixed SoundDataListEditor (used for editing the list of "embedded" sounds.
  • *Fixed Recent List MRU in Editor. (Adds items that are opened and saved, whereas before it only added files that were saved).
  • *holding Control key during startup presents a dialog allowing the selection of a sound engine.
  • *Enemies now give points when they die.
  • *NormalBlock now has a property that determines which sides get a border.
  • *Changed PlatformObject to work much better under new platform independent code.
  • *Tweaked colours of the fireparticle.
  • *changed many elements (text elements, particularly) to improve smoothing mode; also added outlines to those outlines to make sure they are visible regardless of background colour.
  • *Changed platformObject to move with moving blocks, and added MovingPlatformBlock (observable in "Platforming7.blf" testing levelset included with the game).
  • *improved ImageClipBlock so it caches it's "piece" of the larger image.
  • *Fixed editor bug that caused a IndexOutofRangeException when reloading the same file and navigating through levels in the Levels tab.
  • *Fixed bug where BrickBlock was invisible in the editor
  • +Each level has a list of powerups that are possible to spawn in it, which can be changed in the editor.
  • *Added a broken debughelper. use Shift-F3 to toggle.
  • *Changed application icon to reflect new NormalBlock.
  • *Orbs now bounce off the sides of a level
  • *Fixed bug with QueuedSoundManager that was causing some Music bugs.
  • +Added Control-Alt-H shortcut when highscores are displayed to reset the high-score list for the level. This does not prompt!
  • +High scores listing has a "drop-shadow" effect.
  • +Added a bit of code to make Portable installations possible. I need to document this more thoroughly; basically, put an INI file in the same directory as the executable to make it "portable". (the appropriate folders can be changed in that INI file to reflect the portable location).
  • +Added Support for the Windows "Game Explorer". At least, I think I did...
  • *Changed Frustrator Powerup; instead of causing the frustration effect of the block, it now spawns a FrustratorBall. a FrustratorBall is the opposite of a normalblock, and only bounces off destroyed blocks, causing them to respawn. (it's as disallusioning as it sounds)
  • Probably added a bunch of other stuff that I didn't put in the devlog I'm basing this list on

Old Versions:


Version 2.7.1
Version 2.7.0
Version 2.6.0
Version 2.4.1
Version 2.3.0
Version 2.2.1
Version 2.1.1
Version 2.1
Version 2.0.1 (minor bugfix)
Version 2.0.1
Version 2.0
Version (1.3)
Version (1.2) And it's Source
Version (1.0.1)

Download BASeBlock
BASeNotes
Simple Note Taker Application
Current Version:1.0
BASeCamp BASeNotes, a simple WPF Program I wrote ages ago to first get a grasp of WPF methodologies. uses the WPFToolkit. It's sort of like some weird combination of Notepad and that old Windows 3.1 Cardfile. Requires .NET 3.5.
Download BASeNotes
BASeParser .NET
BASeParser .NET
Current Version:1.1.0
BASeParser .NET is my .NET rewrite of my Visual Basic 6 BASeParser XP Library. This download is just a zip of the project folder, so it contains all the source as well as the binaries to both the library as well as a few test projects.

Update, Version 1.1:

Fixed a bug that broke function parsing. Not sure how I missed it the first time.

ANOTHER Update:

Was a tad bored of BASeBlock so fired up this project. messed around, and fixed quite a few issues and added features. Now, it "expands" lists/arrays properly. For example, Sin({4,5}) is evaluated properly; this goes for operators as well, so 5-{2,3} will give you a list of values, {3,2}; and it includes when both operands are arrays/lists. This is handled within the CoreOpFunc class, so it isn't automatic behaviour for new classes that implement new functions and operators. I also added the round() function. I intend to obviously add a bunch of other functions, but I don't know when that will be so I just tossed this up while I was... in the area, I guess.

Download BASeParser .NET
BCDodger
A simple stay alive for as long as possible
and then stream slews of curses at the game when you die game.
Current Version:0.3.1

BCDodger is a simple game written in C#. Your mouse controls a group of spinning objects, which represent your possumist comrades. You must move them to protect them from the flying mercedes logos, which represent various features of mercedes automobiles.

When a mercedes Logo touches a possum follower, it converts that possum follower to the dark lord mercedes, and you lose them as a comrade.

It might be best to not have a story....

To run this, run the EXE in the "debug" folder (BCDodger\BCDodger\Bin\Debug\BCDodger.exe)

This is because I'm lazy and all the resources are in that folder.

the code already supports an APPDATA folder containing said resources, but that would mean there is an installation step, and at the moment I'd rather not have to deal with the woes of MSI installers.

Also: I recommend running the "demo" (from the file menu) before you play a game. if you play a game, get game over, and then play the demo, the background stays red and the timing is off. (easy fix, but I figured I had been postponing releasing it for long enough).

UPDATE: Thanks to Tux2 (of http://www.jrtechsupport.com/) there is now a Mono compatible version. This can be downloaded here.

The main reason changes were required was that I opted to use a sound library that is only works on windows. More annoying is the general lack of sound support in the otherwise pretty complete .NET framework (to my understanding .NET 4 adds Sound capabilities). Oh well.

Download BCDodger
BCDodgerX
BCDodgerX Game of Dodging
Current Version:1.0.0.0

BCDodgerX is my "rewrite" of the older BCDodger. BCDodger was my first serious foray into C# Programming and .NET, and it has a lot of issues. Since I hadn't dealt with XNA much and the concept of the game was simple, I decided I would rewrite it using XNA. I originally started it in XNA 3.0 with VS2008, but at some point swapped over to VS2010 and XNA 4.0, even though I don't use any XNA 4.0 features to my recollection. Oh well.

The "Installer" program is actually a self-extracting executable which extracts the files that were created from the XNA publish tool and runs the XNA setup program.

And here it is; BCDodgerX. It's very much a early version.

  • Requires the .NET framework, version 4.
  • Resolution is "locked" at 800x600. This will be an option. Eventually. main issue is that different sizes could change the difficulty, though.
  • High scores are saved. The High-Score handing is done by the exact same code that handles High-Scores in BASeBlock, but some of the features (such as managing different score lists which is used for levelset-based handling in BASeBlock) are not used. The highscore file can be found in %appdata%\BCDodgerX.
  • Since I haven't dealt with XNA before I'm not 100% sure what is needed to properly install it, so I just used the XNA publish tool.

Download BCDodgerX
BCScript
BASeCamp Script Language
Current Version:1.3.0.0
BCScript is a Scripting language developed as a test of the power of the BASeParser expression parsing library. It supports most programming constructs. However. It has one fatal flaw- No documentation as of yet. The basic premise was as a test of the Evaluator BASeParser XP, which is the second iteration of a Expression Evaluator I've written. There are a few sample scripts that should make it clear exactly what is possible.
Download BCScript
BCSearch
BCSearch File Search Application
Current Version:2.1.0.0
BCSearch is a Search Application written to demonstrate the abilities of My Class Library, BCFile. It expanded however into a useful program in it's own right, as well. It's main advantage over the basic Windows Search is that it can filter results through a number of different "filters", Each filter can be used to filter files based on their name, a file mask, attributes, contents, the contents or number of Alternate Data Streams, and if that's not enough, a VBScript function that is passed the BCFile.CFile Object can be used to filter on that objects properties.

Update: 2.1.0

Fixes a few bugs and crashes with the program. Stop button is actually usable.


update: Version 2.0.0

It's been a while, but I finally decided to release the latest version of BCSearch. This version incorporates quite a number of new features. The intended "actionfilters" functionality is disabled currently (you may uncomment the appropriate portions of the Menu XML file to re-enable the feature) I also added an easter egg that I'm sure will be quite amusing to those who find it.

I also added the "simple" filter mode. At the moment it provides a file mask and the ability to use a regular expression for that file mask in a search, but that's it.

I also added a splitter bar that splits the upper and lower panes and allows one to size them as desired. No doubt this has added about 500 new bugs to the program.

When trying to create a working setup, I found issues whereby the program crashed on Vista nad earlier but crashed on XP. since I haven't yet tested this on 2000, it's fully possible it still crashes there, as well. I managed to hunt down the problem (or more precisely, I haphazardly changed things until it seemed to work) and it no longer crashes on startup.

update: Version 1.9.00

This version has seen the squashing of several listview related bugs, culminating in a major "fix" for the VBAccelerator listview. Technically, the way it was originally allowed for a few predetermined sorting modes. Since BCSearch "formats" the size data as KB MB, and so forth, sorting numerically on that column would not be desirable. What I was doing was placing the size in a certain "itemData" field of each listitem. This worked. Except that itemData cannot hold a number larger then around 2 billion, or about 1 GB. files larger then this still displayed properly, but the overflow error meant they were sorted as 0. I popped open the VBAccelerator ListView control and plopped in a new Event for custom sorting, which I now use for the size column. (not the size on disk column, which is simply something I forgot until just now.

the Filters are now added, removed, and edited via toolbar buttons on a commandbar control that sits to the left of the filters listview.

Note: Some users have reported errors regarding already present copies of dll and ocx files the installer tries to copy. Any OS that has System File Protection (2000 and up) should have the proper versions of these files already installed- therefore, this error can be safely ignored.

Download BCSearch
BCStreams
BCStreams Alternate Data Streams Viewer
Current Version:3.4.2
BCStreams: Alternate Data Streams Enumerator. Similar in function to the LADS tool available elsewhere. Command-Line Application written in Visual Basic 6.

UPDATE: Version 3.4.2: no longer chokes on quoted filenames. tidied up /h output.

Download BCStreams
ClipFix
Clipboard Unjammer
Current Version:1.1
A program for fixing when those bloody programs open the clipboard and don't close it.
Download ClipFix
DeepUnzipper
Recursive Zip Extractor
Current Version:1.0
This program is designed to be used to extract zip files recursively; that is, zip files which contain other zip files. The file names are created based on where the actual file is within the heirarchy. One current limitation is that no paths are preserved and files that exist in folders within the zip file will not be extracted (at least as near as I can tell). I might revisit and fix that limitation in another version.
Download DeepUnzipper
NetExceptions
A .NET Exception Event Viewer Tool.
Current Version:1.0.0.0
Lists Exceptions from the Event Viewer that represent unhandled Exceptions from .NET Applications.
Download NetExceptions
PixelCounter
A Pixel Counter Application
Current Version:1.0.0
A simple application for counting the unique colors in an image. Originally created to make creating pixel art from a bitmap in Minecraft easier.
Download PixelCounter
Poing
Poing: Arkanoid clone
Current Version:1.6.1
Poing- intended for people who are into masochism and also enjoy arkanoid. I made this many many years ago (just look at the date on the splash screen). I only recently dug it out and fixed a few long -standing bugs.

Update: 1.6.1 now uses DirectSound and DirectMusic for sound and music functionality. (music is supposed to loop but doesn't for some reason. This should be fixed in the next release.

DirectSound was a tough one; the main reason I decided to switch was that, for some reason, I was causing playsound() to leak. This often ended up with my audiodg.exe process consuming over 4GB of RAM whereby it should only get around 10 or 12K.

New version fixes that issue.

Download Poing
Recoder
Bulk Sound File transcoder
Current Version:1.0.1
A Bulk Music Transcoder. Designed to allow me to easily transcode my .flac music completely to a new duplicated folder that has .mp3 files instead, such that I can use those files with devices that cannot play .flac files.
Download Recoder
Walls
A Snake game. What else can I say?
Current Version:1.2
Much like Poing, this was an old project that I wrote many moons ago. recently I touched it up and fixed a couple of bugs, added some things, etc- and figured it was worth uploading.
Download Walls
WOWTask
List 16-bit Tasks
Current Version:1.0.0
No- not World of Warcraft Tasks... Windows On Windows, the 16-bit "emulator" that is used by 32-bit versions of windows to run 16-bit applications and by 64-bit versions of windows to r un 32-bit applications. This particular program is designed for the former case.
Download WOWTask