Keeping on top of new software development platforms is a full-time job… but I’ve already got one! One of my own personal frustrations about my current work is that we are still using Windows Forms. This is fine in that it does the job and I’m familiar with it, but it means that if I want to “remember” how to use WPF or learn anything about UWP, I have to do it on my own time. But when I’m writing or working on apersonal project I want something that words as fast as possible so I often fallback into using Windows Forms.
I recently posted about the Doom WAD File format, and noted that I would be targeting a WPF Application for actually using it, and I’ve held fast to that capability. It has been so long that I’ve forgotten a lot about how WPF and XAML work, so I’ve been relearning a lot. I’ve been referring to “Pro WPF in C# 2008” as a reference on some of the basics (Command Bindings and such).
It got me thinking about all the different platforms and libraries that are available. A recent comment on this blog regarding a code sample could be summarized as “It’s not on Nuget, this sucks, and you suck in particular”. Mind you, as it happens the libraries used there were used again in a later project for the same task which did in fact use NuGet Packages. But it set the mind in motion about how there is something of an unhealthy Dogma surrounding almost anything that is not new and cool and pop’n fresh. Even WPF is old hat tat this point; The ‘cool’ thing to do is abandon the well-fleshed out environment of Windows desktop applications and make UWP and Modern UI ‘Apps’ which themselves have quite a few limitations. In a way we’ve come full circle; we went from dumb terminals that interacted with a server, to fat-client applications that contained a lot of logic and perhaps communicated information with a server such as a database, and now we’re at thin “apps” which exclusively access the outside world through separate web services.
New Platforms, libraries, and technologies come out on such a consistent basis that keeping up is a very difficult task; especially when those new technologies themselves bounced off of previous technologies that you haven’t got a strong grasp on (In my case, XAML and WPF). For me personally I’ll be aiming to make all my future .NET programs in WPF so that in the process I can become more familiar with it (And stop forgetting everything I knew about it from when I worked on BCJobClock).
As a side note, Yesterday (May 21st, 2016) was Visual Basic’s 25th Birthday/Anniversary of it’s release on May 21st 1991. One of these days I have to finish up the drafts of each version of Visual Basic from my ‘series’ of posts on each version. (VB4 I hope to be particularly interesting!)
I perhaps enjoy messing about with Computer hardware too much. Of course, it get’s harder and harder to justify the purchase of a new computer build as it will be built, used for a bit, and then added to my collection of computers I seldom use.
I was actually pondering the possibility of adding a Radeon Graphics card to my Budget Computer Build which I discussed last year and which I Provided an update about later- I’ve since also added a USB3 card so I can use the front panel USB3. I realized that while I could add a Radeon Graphics card- it would be rather silly to do so, since I never use the system. In fact, I may as well give it to somebody who would use it, which led me down the path where I decided to buy all the parts for a new build for my Brother, who’s birthday is in March. Because I didn’t think of it until quite soon, this meant I had to compromise in order to be able to afford it, but I was able to get some assistance from the fine folks at Computer Hope Forum. To help narrow down the decision.
The first consideration when building a computer should be, “What is it going to be used for”. With the aforementioned budget build, that was basically “Whatever I’m able to” as it was an experiment in the capability of a very low-cost system. Of course in this instance, I couldn’t well just ask- so I had to base it on what I observed. Light gaming and browsing seems to dominate. Of note, I should add, is that the existing system is a Compaq Presario 5450f- it uses an E-series Pentium Processor and dates from 2007 when it was lo-to-mid range at the time, as well. So it would be very difficult to build a worse system!
The classic question when building a PC is much the same as it has been for the last decade- AMD, or Intel? The typical answer seems to depend on the era, and right now is no exception. Right now, the leaning is towards Intel. I ended up opting for an Intel processor primarily because the FX-Chip processor I specced out for an AMD build was a larger ATX motherboard and I was already set on the case- the same Fractal Design Core 1100 I used for my budget build, in fact, and that simply would not do.
Creating a Quality omelette requires quality eggs, and building a computer is no exception. The Motherboard is in many respects the egg that holds everything else together. As I had chosen Intel, this meant a 1150 socket motherboard. I opted for the ASUS B85M-G
Motherboard. This pairs with the selected processor quite nicely since the processor doesn’t require any fancy chipset features to utilize. Furthermore, compared to some of the other options, it is nearly half the price (of a Gigabyte board I was considering) while providing many of the same features. The primary trade-offs appear to be in the realm of connectivity (fewer SATA Ports, only one 6G SATA port, more USB2 rear panel connectors over USB3, etc).Of particular note is that I learned my lesson about USB3 headers from my budget build, which lacked a header on the motherboard- I made sure this one had one.
Given that his current system is using a 2007-era value CPU, I could have just gotten a modern Pentium chip for LGA 1150 and still blown it out of the water. However, I decided to pot for an i-Series CPU, selecting an i3-4160. Since it is not a K-series CPU it doesn’t benefit from some chipset features that would be on newer chipset motherboards, making it a good combination with the B85 Chipset on the ASUS motherboard.
I cheaped out here, actually- I ended up removing a graphics card from the system entirely- or rather, the build won’t be using a new Graphics Card. My thinking is that we can use the 9800GTX+ that is in his current system in this system. the 9800GTX+ is obviously not a modern, high-end card, but it means that a Graphics Card can be upgraded later without having to worry about the total price quite as much as right now.
For RAM, 8GB is a good starting amount. The motherboard has 4 RAM slots, and I originally specced out to have 2 4GB sticks. I ended up changing that out for a single 8GB stick, such that the system could be easily upgraded without making existing components redundant. This makes it affordable for him to get new components as well if he wanted. I got a deal on some Corsair “Vengeance” RAM whereas I usually opt for their ‘XMS’ line of DIMMs.
For this, I once again considered his existing situation to make a reasonable upgrade while remaining affordable. The current system has a 250GB HDD, so for this new arrangement, I chose to go with a mid-range Crucial BX SSD, with a 240GB size. This should give a very nice performance improvement without sacrificing the amount of space they are used to.
I also went with an EVGA 500W Power Supply which should provide enough power for the system as well as any future GPU that would be installed.
The parts arrived already, so now it is just a waiting game…
The Endless journey of learning and technical improvement continues, And this July I have once again been bestowed with the Microsoft MVP Award, for the .NET Expertise.
“But wait a minute” you say, The other times you mentioned it, you received an award for ‘Visual C#’
Ahh- yes indeed! My previous awards say “Visual C#” however, my new one will say “.NET”. My expertise specifically has not changed, however it was decided within the program (and I agree that it sounded reasonable) to merge the various .NET expertises (Visual C#, Visual Basic, F#, etc.) into one expertise, because there was so much overlap.
This is actually quite an interesting change, and I may consider doing some more things with F# and VB.NET. I was considering, since my main VB experience has been with VB6, taking a look at the differences that have occurred in the intervening years more closely. There are quite a lot of posts/articles written on that topic but they all do so with a rather negative slant towards VB.NET for a number of reasons.
Like all previous years- especially when I was first nominated, and subsequently awarded, in 2012, it always takes me by surprise. One of the important things I think is to never expect to be re-awarded. Instead, I try to write code-intensive posts as often as possible to “re-earn” it each year. And when (inevitably at some point) I don’t get re-awarded, I will continue to post the same content that got me awarded to begin with as much as possible.
Speaking of, one thing I’ve found lately is that I can’t really adapt a lot of the work I am doing to something that can be anonymized and posted as a blog post. I think I might have already written about that, in fact. However some stuff on the horizon may involve adapting my existing Product Key code to work in a distributed environment- such that for example there would be a “license server” that would be able to effectively “audit” our own customers to make sure they don’t run more than the licensed number of installs of our software. I’m sure that will be an interesting challenge for the future and intend to at least do some investigation into the concept by making adjustments to my own version which would of course be made available here.
More babbling about BASeBlock. It’s actually rather sad in a way because I would actually prefer to work on my work projects than on my own, simply because there is so much code involved in the changes I want to make to BASeBlock.
My biggest mistake when originally writing BASeBlock was in using the built-in .NET Serialization capabilities. The biggest problem with doing so is that the data stream is not very accessible, data errors are difficult to localize, and it is basically a huge nightmare- not to mention that there is no guarantee of data being portable from one build to the next. This was actually why I created my XML Serialization library a few months ago, “Elementizer”. The aim of Elementizer is to provide XML save/load functionality and have it implementable in a very similar fashion to ISerializable. This is in contrast to the existing XML Serialization solutions I found which tend to rely on saving and restoring public properties, and I do not want to change my object heirarchy and how values are exposed simply so they can be saved/loaded by a XML library. Right now my task is quite monumental- I need to go through and add support for my IXmlPersistable interface to every serializable class in the project. I’m trying to do it peacemeal and do a bit of testing as I go (so I don’t have to just press F5 later and hope it all works!) and while I’ve only got a rather basic amount working it works alright- I’m able to save and load a few block types to and from XML. The real question is going to be what it looks like with an entire LevelSet, which naturally requires quite a lot of other classes to support the feature. The biggest issue was adding support for some less-than-standard data types to Elementizer, such as Bitmaps and certain data types like DateTime and TimeSpans, which themselves implement ISerializable but for obvious reasons can’t implement IXmlPersistable. My solution consisted of using Elementizer’s ability to add deserializers and serializers for specific data types and I just slapped those into the Standard Helper.
It’s a daunting task but it is very sad seeing something that I used to take so much pride it be sort of abandoned in an unfinished state. And I think it is the Serialization that really keeps me from getting motivated- if I can fix that to use XML, I might be more inclined to fix other issues with the program, much like how I started to fix the GameState implementation. And, it will serve as a great example for Elementizer, since the serialization that BASeBlock needs is quite complicated- it needs to save an EditorSet which has lists of sounds and images that are added on and optional music, as well as a LevelSet which has sets of Levels which in addition to their own properties such as music and themes also have a set of various blocks and block types as well as Balls that the level starts with- so I won’t be able to really test saving very well until later.
The one great advantage of the ISerializable Interface implementation is how I was able to utilize it for the Copy-Paste feature of the Level Editor. I actually think the level editor is probably my favourite part of the program, actually.
On this NSA thing
So this whole thing with the “leaks” and the NSA is becoming pretty ‘common knowledge’. To be honest though I’m not sure if people are really engaging their critical thinking skills when it comes to this sort of thing. Here are some things that bother me.
This seems pretty important. Every single “Source” of information is simply a newspaper or magazine article, claiming it came from Snowden. We have absolutely no way of independently verifying it’s source nor it’s authenticity. This doesn’t help when different articles claim that allegedly leaked documents say the exact opposite thing, either. Supposedly, Snowden wanted them to be made available to the public. I don’t believe this for a few reasons. First, if he wanted them public, it’s not hard. Upload the information as a torrent and soon it will have so many seeders it would be impossible to get rid of if somebody wanted to. The fact that there is no evident effort makes me wonder if this is some weird experiment.
The fundamental issue is- no source documents. Occam’s Razor. Claiming all the worlds largest technical companies are handing over our personal information to the U.S government is an extraordinary claim. It requires extraordinary evidence. ALl we have are a few slides and jpegs allegedly taken from some leaked documents. They prove nothing- anybody could have typed them, and there are numerous errors that seem to defy how the organization actually works. The poor design on the slideshow, and the inclusion of random Company logos in that slideshow for no reason; etc. It points to one-off hackjob.
Fundamentally, until the source documents are released for independent verification and examination, I see no good reason that anybody should take any of this information as true. Repeatedly I see references to “NSA this” and “NSA that”; how “Microsoft/Google/etc” are selling our information to the government. But before you say something like that, consider what evidence you have. The best evidence anybody has right now is third party- we have articles that supposedly cover parts of documents that were allegedly leaked by Edward Snowden, who used to work for the NSA. One has to ask the question for each step of the way. Did the NSA know he was going to cause trouble and only give him access to stupid looking documents with terrible wording? Did the newspapers supposedly covering the story and posting snippets and images of the leaked documents represent the information correctly? And do we really have any good reason beyond the word of journalists that any of this is actually true? No. sources. Without sources information is meaningless. Right now it’s a bunch of claims with no more legitimacy than if I declared I was Santa Claus. People are more willing to believe it because it makes them feel secure, ironically, in knowing the government actually knows what they are doing to some extent. Sort of like how conspiracy nutters who think the world is run by lizard-people can at least be reasonably secure in the ‘knowledge’ that the goverment is not run by your average human beings.
As far as I’m concerned, all the evidence points to this being fake or otherwise illegitimate somehow. The fact that despite wanting them public, Snowden went to old-style journalism instead of using modern information technology to disperse the information questions that motive. The fact that the NSA did not take plausible deniability and basically admitted that “yes those leaked documents are confidential documents that nobody else should see” questions their legitimacy. And the ridiculous focus on a person (Edward Snowden) rather than on the information makes me further wonder about the motives behind this.
Hard Disks fail. It is a fact that those of us who use computers understand.
Perhaps ironically, however, many of us who otherwise warn others about backing up data and hard drive failures seldom follow our own advice.
Last week, my Secondary Hard Drive (appears) to have finally given up on life. Of course this was no surprise to me- I believe I wrote previously about how it was becoming rather stalwart and unwieldy, requiring me to disable the indexing service just to keep it ‘alive’.
The Typical “symptom” was that the drive would disappear from the system after a prolonged uptime. Or, to be more precise, the drive would suddenly return I/O errors on all requests and refuse to even acknowledge the system itself. This problem started a while ago and I have to say it gave me quite a fright initially. I did go on a backup binge, but at the time I couldn’t replace the drive nor buy any external storage to backup to. The drive also hung chkdsk /f and basically was already a lost cause at that point. I managed to ‘rescue’ to to be usable more or less by tweaking some indexing options so windows didn’t try to index the drive. It seemed that accessing certain files caused the problem. I reduced my access and particularly reads and writes to the drive, and the problem “went away”. Out of sight out of mind.
Of course this is not how hardware failures work, and I knew that well. Over time I basically forgot the problem existed and started to read and write data to the Secondary hard drive, without a care for the fact that the drive was failing. As I was testing a CSV export program for my job (which I wrote the output to D:\ because hey I always write random crap there) The issue returned. Not pleasant. I rebooted a few times and performed several cold boots but I was unable to revive the drive. I’ve removed it from my system for the moment, because at the time I rather needed my machine for things. Later when I was able, I investigated my options. Particularly, I wanted to know what I had lost, in terms of things that I had created myself and didn’t have backed up. All my C# work is on my OS drive, so that was safe. I also have a number of backups of my VB Projects folder, which has remained relatively unchanged for quite some time. From what I can tell I did lose a number of program installations, game saves, saved ISO files (VMWare made me quite aware of this), the .PSD files for many of my Wallpapers (which sucks a lot, those are a PITA and you can’t just remake the exact same thing).
Anyway, A lot of the data is stuff I can simply download again- Music can be redownloaded or re-ripped quite easily, for example. That stuff I don’t care about. The worst part is I don’t even really know what I lost.
At this point my approach is simple- Keep using my system with my 750GB drive and hope it doesn’t croak either. The failed drive was a Seagate Barraccuda 7200.11 (1.5TB). my remaining System drive is a 7200.11 as well, and it’s about a year older as well, which makes me a bit wary. It hasn’t had any outward issues, though I’ve managed to make mountains out of molehills with otherwise benign disk accesses.
“So where were your backups?” you ask. A reasonable question. All my source code and assets for that source code are safe, with multiple copies. The issue was that my secondary drive was my largest drive and basically became a dumping ground for pretty much everything. As a result I had no other drives large enough to serve as a backup. By the time I had problems it was too late- I could mostly access the files but a bulk-copy of almost everything inevitably had issues. My more important stuff is backed up multiple times and strewn across a number of backup DVDs as well. Things like my Photoshop work less so; I managed to find a bunch of them on an external that was relatively new- in fact, I suspect I might have only lost one or two of the photoshop files, which is a good recovery.
Basically, It seems that everything super-important to me on that drive was pretty much backed up, or can be redownloaded again.
For the long-term I was hoping the drive would at least last until I make a new build. given these recent issues I’ve changed tact and have decided to go the route of purchasing two new Hard drives and going for a fresh reinstall of Windows to boot on this system instead. Most of my issues with this computer have simply been problems with the Hard Drive, and the 7200.11 apparently has some issues. My idea at the moment is to go for a 480GB SSD drive and a 4TB Data drive. This brings me to the upside.
Having recently reinstalled Windows on this laptop I’m typing on now for similar reasons, I can say that reinstalling Windows and all your applications is a massive pain but also has it’s advantages- the nice thing in particular is a nice clean system. Of course my desktop isn’t too bad in that sense but there are quite a few applications and games installed that I can’t uninstall because “I might want to use them or play them someday” Even though I’ve never used or played them, ever. My transfer strategy is essentially to go the route of installing the new SSD and the 4TB, and installing the current Boot drive after I get that initially setup for the purposes of copying data. In fact I might benefit from just imaging my current drive and placing it on the 4TB at that point, just so I don’t get bitten later on. I also plan on getting an External SATA enclosure for use later as a backup external but also as a last ditch attempt to get access to my “failed” drive. In the meantime, my new Laptop drive has been extremely reliable- I thought 1TB was overkill and I still think it may be, but it’s previous drive was failing as well- even worse than the one in my desktop was- so having a system that I know isn’t going to simply stop working.
I originally was going for an SSD in the laptop- just to give SSDs a fair go. Also, because my laptop drive was failing. I was too impatient to order one online and so ended up buying one at London Drugs, the downside being that all they had was SSHDs and the smallest was 1TB. Not wanting to leave with nothing (I walked an hour to get there dammit) I bought that drive. Can’t say I Regret that decision, giving these circumstances- now I have more space that I can use as a safe backup for my desktop’s data, once I figure out why it’s not working over the network.
I don’t know how but somehow I’ve been awarded the Microsoft MVP award for my contributions to C# technical communities (C# MVP). Of course I am very surprised at this, but I guess I have a short memory. I do have a number of posts and blog entries regarding C#, as well as a lot of forum posts across my various profiles that assist with it. My initial response was actually self-deprecating- “I guess they give them to anybody these days” Which is of course not true.
I cannot help but feel like I got it “by accident”. Most MVPs really are industry professionals with professional expertise, a college education, and a myriad of other qualifications. I feel like an imposter, since I don’t have any post-secondary education and certainly no formal education in any of the domains that I am essentially being awarded for, nor have I actually worked in the industry (well, arguably, that’s not true, if my failing attempt to start a company counts).
That isn’t necessarily to say I don’t deserve the award- I imagine the people responsible for the MVP program are a lot more qualified to make that decision than me.
At this point I’m forced to wonder how it helps me. It does make a very nice thing to put on a resume, but the thing is, I have no place to submit that resume where that award is going to matter. At my last job I think the most my skills were actually used was when I told the manager that, “yes, the monitor needs to be plugged in to work”, or something to that effect. I quit my last job nearly a year ago (Last October) Because I wanted to find something working with computers. The closest things to this are still retail (places like Staples, Best Buy (*Shudder*) and so forth. I applied at every single one I could find, and even got a few interviews, but nothing came of it. Arguably it’s equally likely the fact that shortly after the day I had all those interviews my phone got cut off made follow-ups impossible, so I have absolutely no clue if they ever tried to call me after that (in fairness they did have my E-Mail addresses and I’ve not received anything about it, though it’s more likely they tried to phone, and then just went to the next applicant).
Regardless, let’s be honest. Even that is below my pay grade. I wrote about “getting one’s foot in the door” previously, and this just goes to show how damned impossible it seems to be. The idea of a person who received a MVP Award for sharing C# technical expertise working a minimum wage crap job- or even those above- is almost laughable, but there is absolutely nothing else around here, with one exception.
There is, however, one place I haven’t tried. Pelican Software (which is actually owned by Northwest Forest Products, if memory serves). Well, that’s not quite true, I did in fact try them back when I was a spunky kid whose expertise was pretty much just VB6 and feeling smugly superior… More recently, I did have some dealings with them regarding a Freelance program I had written, “BCJobClock” since it is very similar in many ways to their product, “Tallys”. Things were looking up in that regard but the eventual decision they reached was that BCJobClock was too similar to it. (With the exception that it’s UI is not confusing and it doesn’t cost several thousand dollars). I never actually applied there since to my understanding they really aren’t doing to well and I doubt they’d take the business risk of hiring more staff in their situation. But I may try that anyway. It’s known statistic that companies that employ at least one MVP Award winner are more successful.
At this point I sort of have two options: I can either pursue this BASeCamp thing and try to market BCJobClock (which currently has not appeared on my site at all) for a nominal price, by integrating the existing ProductKey code that I already wrote and used for BASeBlock. But the thing is that the BASeBlock situation really tells me everything I need to know- it’s pointless. Nobody has actually bought a registered copy. And there are very few downloads. It’s online, but in many ways it may as well not be online at all. It just represents 3 years of my spare time that I’ve essentially wasted on a bloody game. It’s still “my product” and I’m proud of it and all that, but pride doesn’t pay bills. And I don’t want to lock away the editor behind the requirement for registration because the Editor is perhaps the part I like the most about the entire thing. Honestly when I was dealing with NWFP regarding the program I just wanted to sell the entire thing and get rid of it. I was sick of it and in some ways I still am. Come to think of it, I’d be more than happy to sign something that gives the complete IP to BCJobClock to NWFP as a condition of working there. Of course it probably wouldn’t get used, but this really would be the only guarantee that I won’t at some point be in direct competition with them, which could very well happen- and this guarantee might be worth it. (I would say so- my program is a heck of a lot easier to use and if I do release it in some manner it’s going to be a lot cheaper, too; though despite their notations it won’t be cutting into any of their market anyway- but in that case it will still be my market share, and not theirs.
Of course, BCJobClock is aimed at a different market. In some ways it’s a Time Management application. I suppose I haven’t discussed the program much since I hadn’t decided what I was going to do with it (well actually there was a page on the main landing site that was a little exuberant on the entire thing at some point, but I removed it when reality punched me in the face with BASeBlock). To Summarize, it basically manages workers and orders for a Repair shop or similar shop. This can be automotive, like the client I originally wrote it for (Somewhere in Iowa, to my understanding) Or it could easily be used for Repair shops or other locations that need a Worker< ->Task management system. The Client program allows employees to clock into and out of orders using a touch-screen interface (naturally I don’t provide the hardware, just the software here), which is done through a WPF C# Application. This program interfaces with a remote MySQL Server using the SQL/Connector which allows the use of ADO.NET Connection and similar objects to work with the MySQL Remote database, which manages all the… data… involved. The Administrator program allows the addition/removal of users, inspection of all orders and users and the time taken on each order as well as each user in total, and all sorts of other information. There is also another little “Watcher” program that is designed for use by people tasked to surpervise work orders and assign tasks to other employees, but aren’t able to have full access to the administrator panel for adding and removing users, getting reports, and all that. Because it is designed for watching users, it also shows Notifications when Users become available for work or when Users or tasks are being “ignored”, and little coloured indicators to show when users/orders are working/being worked on.
It still needs a bit of work to streamline some speed problems that have been encountered by the sole user of the program (which we hacked away with a few INI file changes for their immediate use case), which is related to the fact that the admin program tries to keep it’s view “up to date” by refreshing from the database on a given delay. Unfortunately it picks up a lot of data in the process. Ideally, it would only proceed to actually carry out the “refresh” from the database when it actually knew there was a change, but I’m not really sure how to implement that. Working with databases is frustrating, in that these seemingly basic capabilities seem impossible. (Q.How do I detect when the results of a query changed? A. you perform the query and look through the entire resultset). Of course at that point if you find no changes you just wasted that entire time, so it’s just begging the question.
Actually, with some thought, there is another solution. Relocation. There is simply nothing around here for the type of person who has skills and abilities relevant to a C# MVP Award, so in many ways having it as a bullet point echoes as hollow as the sepia-toned aged mention of my High-School awards from almost ten years ago. So, Maybe it’s time to leave Nanaimo. There simply aren’t any tech jobs here (or I’ve become blind). Not even some sort of more general IT job dealing with servers or the network of a office building or what-have-you.
As I noted however, I never actually inquired NWFP for a career or job, since that wasn’t really my intention at the time. In fact it never even occurred to me. The MVP Award I think helps me here; those aren’t exactly given away freely, there are only two recipients in Nanaimo, Me, and a fellow whose expertise lies in SQL Server; I think there are a dozen on Vancouver Island (though I cannot check).
And if that doesn’t work- well, I guess I’ll have to relocate. On the bright side, My website will still be in the same place 😛
A quick update on the functionality I was trying to use ReferenceCounted List for in BASeBlock.
I ended up not using the class at all. I actually ended up just using a different method- instead of the powerup changing the drawattributes when it starts and ends, instead it is simply called each frame- basically the character is like “OK, before I draw- you abilities got anything to add” and it will change what it wants as needed. The gamecharacter resets it after drawing so if the ability is removed it will “revert” to normal appearance.
Also, this is possibly my shortest blog post ever. In order to bulk it up- I made some changes to the main page as well as the theme of the blog. The main page’s various images were tweaked, and the blog has had it’s font’s changed because the font it was using was annoying. (Windows Vista and later will be unaffected by the change). BASeBlock now has a “BuilderShotPowerup” thingamajig that let’s you shoot blocks and build stuff, which I think will be useful for building a “bridge” for the GameCharacter, and other purposes. (This idea was Mulreay’s, btw, he has great ideas). I tweaked a lot of stuff such as the editor’s sound data list editor now showing progress and being less annoying to use, and a few general tweaks and minor fixes here and there. I documented it all in the changelog which I will post when I finally upload the new version.