All posts by Wally

Visual Studio 2005 Released

As I’m sure most of the developer viewers are aware, Microsoft has officially released Visual Studio 2005 and SQL Server 2005. I watched the Launch event and even though it was packed with buzz words and jargon ‘work faster, better results’, the demos were quite impressive.

The greatest thing to come out of this as far as I’m concerned are the express editions of each package, a completely free, even for commercial use, version of the software that are available now. I took some time last night and downloaded Visual C# 2005 Express and I have to say I’m very impressed in what it offers for a free software. I know I’m gonna get flamed for this, but I still say if Linux (or any other OS for that matter) offered a development suite as quick and powerful as Visual Studio, Microsoft would be in a much worse position than they are today. Anything that lets me work smartly and saves me time is good for me, plus the new refactoring tools are pretty sweet.

My current project (damn, far too many of those…) involves writing a DirectX app using C#. I’ve started moving it over to 2005 and .Net 2.0 and I have to say it works flawlessly. IntelliSense is much improved and much quicker to help you out without getting in the way, plus it seems to have a better understanding of code context which makes it freaky accurate, at least from my exprience so far.

I definitely recommend that anybody that does .Net development check out these packages, you’ll be happy you did.

PS: I’ll have some C# 2005 code samples coming soon!

Trying to figure out how to write modular software

For the last couple of weeks I’ve been getting started on the design for a project that buddy and I have been thinking about for some time. I’m not going to go into the details of what the project entails, for there’s potential for some commercial opportunities when it is finished. One of the serious challenges facing us with this project comes from designing a fully modular solution.

Most of my effort has gone into thinking about the best way to put together a modular piece of software, specifically in a web environment. The ultimate goal would be to have a module handler that will allow new modules to be installed with a single click, all the necessary tables would be created and the module is instantly available in the user experience and from an administration standpoint. It sounds very similar to how the module system works on the PostNuke CMS that runs this very website and who knows, maybe that’s someplace to start.

I’d love it if somebody out there could forward some suggestions from their experience building modular software for the web, I’m sure the visitors of this site would appreciate the helpful information as well. I guess what I’m really looking for is a point in the right direction to get me started. I know that if I spend some time on it I will come up with something on my own, but I’ve always been the head of any project I’ve worked on and I just want somebody to say ‘hey, how about you try doing this instead?’

Please let me know if you have any thoughts/suggestions, post as comments if you like.

My Views on Spyware

I’m sure I’m not the first one to express this view, but I absolutely HATE spyware, I hate the entire idea behind it and the reason it exists and I especially hate having to constantly remove it from every PC I sit down at.

I’m really surprised that more people haven’t revolted against spyware, especially with the amount of frustration it causes for average Joe User when his PC runs ass slow.  I can’t believe that it is still condoned, or legal for that matter, for a software vendor to sneak in 3rd party programs specifically for the purpose of either displaying ads to the user or tracking their Internet browsing for ad purposes.  I realize that there are software developers out there that want to make some money off of their efforts, but that’s why real software companies make you pay for their programs.

Here’s what I think should be done and enforced by some all-seeing eye:

  • If any 3rd party program is being installed along with the main app then it should be required that during the install process one of the dialog boxes be a list of all the extra programs that it is trying to install along with a checkbox to exclude anything that the user does not want.  This is done by some legitimate software companies now, but could definitely be done in more places.
  • No website should automatically install anything on my computer, EVER, without notifying me about it before hand in an easy to read way with an option to skip installation.  I shouldn’t have to have a spyware suite and crazy browser plugins to watch for this.  Also, if a site is found in violation of this rule after written warning their domain name should be seized. 

This may sound a bit extreme to some of you, to others not extreme enough, but here is my reasoning.  We have to eliminate the thinking that because it’s digital it’s not a serious crime, today our lives are more and more dependant on this technology that is hindering itself. 

Take this comparison:  What would you do if you when to Ikea and purchased a coffee table, you put it together and went to bed.  In the morning you walk into your living room and noticed that overnight somebody from Ikea put a hidden camera in your roof.  Of course you’d freak out, anybody would because their completely and blatently invading your personal space.  What would you do if you’re neighbour came into your house while you were at work and painted porno all over your walls?  Of course you would get on the phone with the police and press charges.

I don’t know why this digital world that we live in has to be so different.  For the most part I would actually prefer somebody breaking into my house than breaking into my computer.  My file cabinet has a couple of old cable bills and some school reports in it but my computer has my personal finances, e-mails, photos and tons of other personal stuff.  I do a pretty good job of keeping the crap of my PC by using multiple layers of firewalling, multiple active spyware and virus scanners and by using strong passwords in things like my MS Money software.  Problem is, I’m a Computer Scientist, what about Joe User at home that doesn’t know any better?  Who’s making sure he’s safe?  I know I’m really getting tired of doing it for him.

It’s time the Internet world spoke up and made some changes, I’m amazed to read the millions of articles and posts about spyware and yet nothing substancial has been done to curb it’s growth. 

Let’s do something about it people!

Free Webcasts for .Net Developers: Soup to Nuts

For the last couple of weeks I have been following along with the Soup to Nuts series of Webcasts that are available for free from Microsoft (.net passport required).  Before watching these webcasts I thought I knew what I was doing with .Net and had been considering going out and taking the certification exams.  They taught me that there are a lot smarter ways of doing things within .Net that are less error-prone and require much less work to get going.  I have learned a tremendous amount about ADO.Net data access especially and creating abstracted data access routines for less code coupling.  There are 13 different lessons in the series with each one being roughly an hour and a half in length. 

I have learned so much about .Net development through these tutorials that I want to go back to my old projects and redo them with the knowledge that I have now, I know it would be a tremendous improvement in readability, elegance and performance.  So, needless to say, if you’re interested in .Net programming and want to learn something you probably didn’t know before I strongly recommend that you check out this series at the following URL:

http://www.microsoft.com/events/series/windowsforms.mspx

The Mighty Eclipse has me thinking…

The last two weeks I have found myself straying away from my Visual Studio .Net and grazing back into the world of Java and the awesome Eclipse workbench. I’ve never mentioned Eclipse here before, if fact I had never even used it until just last week when I fired up my old CO871 SpaceInvaders project. What can I say? I’m hooked!

I don’t think I’ve ever come across a development tool that was this quick and easy to use, download a zip, extract it and run the .exe, no installer, no configuring classpaths, it took care of everything for me right out of the box! 

I’ve decided to go back to this SpaceInvaders project for a couple of reasons, first, I promised myself I wouldnt’ be doing any more ‘free’ projects for work at home in my spare time.  And secondly, I thought it would be a excellent, easy to understand tech demo for me to show some of my skills to potential employers down the road.  Even back when I first submitted this project nearly 9 months ago I knew there were things broken or missing that I wanted to include.  I wanted a more robust multi-player system instead of the ‘competing by score’ that kinda works sometimes, there were some memory management issues with the vectors for storing game entities and the UI code could have used some more work on the double-buffering.  Sound and explosions would have been a nice touch too, but I suppose at the time I was just learning Java and ended up doing the whole project myself, so I don’t feel all that bad about it. 

Now for the list of things that I want to change/improve in the next version I release:

  • Rewrite the networking class to allow multiple simultaneous connections (will test my concurrency skills!) and to provide a cleaner interface to the game engine for sending and receiving objects from remote clients.
  • Update the UI with better support for double-buffering and some de-coupling from the game engine, will also be updating the scoreboard classes.  Would also like to have explosions and sound effects for supported platforms.
  • Abstract the game engine to provide a better framework for more game modes to be added using a set of standard interfaces.
  • Update the single-player game experience to include multiple levels of difficulty and enemies that drop towards the player, more realistic to the original.
  • Update the multi-player game to allow for more than two players to be playing at the same time, this will interface strongly with the networking module and require some design changes to the UI to allow for displaying a scoreboard of all connected players.  Would also be nice to have the ability for players on a ‘hot streak’ to send enemies to their opponents as a reward for good shooting.
  • Create a completely new Head2Head mode where two players are on the screen at the same time with enemy ships between them.  The objective would be to clear a path though the enemies so that you could take out your opponent, or simply outlast them being destroyed by the enemies.  I drool when I think about how much fun this would be to play against my friends.
  • There’s also some issues with my first version that I want to fix up too, some memory management issues and some generally ugly code that needs to be re-written.

I figure that’s enough to keep me busy for at least a little bit, after all it’s still the summer and I don’t find myself sitting at home looking for something to do all that often.  I need to get back into this stuff though because I feel like I’m loosing some of my programming mindset with the primitive work I’ve been doing in my current job. 

Here’s a question to those of you out there who are familiar with cross-platform threading with Java:  Does threading still work on handheld devices?  I had been thinking about having the main engine run in it’s own thread and then the UI could easily poll it for updates, before I go and change something like that though I just wanted to make sure that it would still be portable.  I’ll be doing some research into it, but if anybody has some first-hand experience it would be much appreciated. 

I suppose I should actually do some work today seeing as we just recovered from a crisis, but I had to get this all out before I forgot what it was that was keeping my awake at night.  As usual, once the game is ready it will be available here and I will be taking challenges from anybody who dares!

Take it easy.