Managed World

Techno-babble from yet another babbler RSS 2.0
# Monday, February 13, 2006

Well, my hosting renewal came up again. I've decided that it is not worth the money to pay for any hosting of this site (Managed World) since I don't leverage it at all. With that in mind, I've decided to move back to solely using GWB (http://jolson.geekswithblogs.net). So, if you are hitting the RSS feed here on http://www.managed-world.com please change it back to http://jolson.geekswithblogs.net as I will be taking this site down in a month or so.

Sorry for the inconvenience. I will send out another warning when the time comes for the cutover.

(And yes, Chris, after being a consumer of the GWB feed for a while now, I have a distinctly *different* feeling about the whole "Signal/Noise Ratio" argument now so you can expect me to be a good citizen :D)

P.S. DAMN! After going back and reading that Signal/Noise Ratio post I feel like such a dick head. Boy has consuming the feed changed the whole face of how I feel. I want to delete that post so bad, but I guess I'll keep it around to remind myself of how much of an idiot I can be at times.

Posted in Personal
 #       Comments [0]
# Friday, February 10, 2006

Okay, I really hope this is not a scam. Because if it is, well, it shouldn't be because, well, it's cool, and... stuff.

Thanks go to Chris Sells for linking to this video.

 

Posted in Personal
 #       Comments [3]
# Monday, February 06, 2006

Well, I've decided to revisit an old project that I haven't worked on for a while. The project was a game called "Tanks!" that was going to be the basis for a set of articles on game development with Managed DirectX. I'm still doubtful that the articles will make a come back but I definitely want to revive the project, with a twist that is.

Instead of a flat out Tanks game, I'm going to make it more of a programming game. Think of Terrarium meets Robot Battle (or Mind Rover (choose one)) meets Combat. You will be able to create your own Tanks in .NET that will be run in the game itself. I've been wanting to explore this kind of idea for a while and I think this might server as an idea vehicle (no pun intended) for doing so.

The few of you that attended the talk I gave way back at the Portland Code Camp might remember me talking about the architecture of the engine. Well, that will _radically_ change now. I don't know if I've just matured (doubtful) or just have a fresh pair of eyes to look at the problem (more likely), but I've realized that the messaging-based architecture I was using was WAY overkill for the problem. When it comes to the saying "using the right tool for the right job" well, I was using a chainsaw to slice up cucumbers for a salad (and in my opinion it shows).

For the first version I will be ripping out the physics engine entirely (as I don't think it really helps with the gameplay itself). I will be ripping out the messaging infrastructure. This should not only make it less overkill, but it should make it more approachable for the less experienced programmer as well. It may even be that the first version has just manual controls to control the Tanks as well. So be it :).

Maybe this time I can bite off a significant less chunk and see it through to at least the first public release (which would be a drastic step up for me (those of you who know me, feel free to shake your head in enthusiastic agreement at this point)). This time around, more unit tests, more integration, more re-use/adoption rather than roll-your-own.

I think it should be a fun thing. Who knows, maybe I can follow it through to completion with at least programmer art (and I'm sure some of you wouldn't mind since a finished set of articles).

 #       Comments [1]

In an earlier post of mine, I linked to this article by Jim Shore on how building software is nothing like construction. This is a topic I've been thinking about a fair amount lately and I've come to a conclusion: I don't agree entirely with Jim. Here's one of the quotes that have been hanging around in my noodle as of late:

"

In the software world, there is no reason for us to follow the practices of an industry limited by Newtonian laws. We have no gravity. There is no inertia. Lines of code have no weight.

If we want to dig a metaphorical hole after pouring metaphorical concrete, there's nothing to stop us. If we want to flip the software upside down and build a foundation after we've built the building, we can do it. Our only limits are in are (sic) heads. Once we stop thinking that software development is like construction, we'll have one less limitation to struggle with.

"

While it is technically true that we, as software developers, are not governed by Newtonian laws, I think there is one statement where Jim's hammer misses the nail's head: "Our only limits are in are (sic) heads". This is where I disagree.

It is indeed true that we are not governed by physical, world-bound laws. However, that does not mean that we are not governed by any laws whatsoever. This is not a logical conclusion. There are most certainly laws that we are bound by depending upon the context in which we are developing within. It is just that the laws are software-bound instead of physics-bound. Sometimes these laws are relative (like trying to build a new Enterprise-level application in .NET and SQL Server at a company whose entire infrastructure is built upon Unix and Oracle). I'm sure sometimes there are software laws that are absolute as well. The only limits are not in our heads. There are very real-world limits that will scope and change a possible solution. To me, that is one of the key points behind using the right tool for the right job. If we didn't have these constraints, we could use any solution for any problem no matter what the context may be (which unfortunately, I have seen done before).

To me, the interesting piece of research would not be researching the fact that we are not bound by physical laws. I think the interesting research is finding out what laws we are bound by in the virtual world. Who is going to be the Descartes, Newton, or Einstein of computer software?

Posted in Programming
 #       Comments [3]
# Sunday, February 05, 2006

If you've been reading my blog for a while now, it's probably no secret to you that I'm a fan of Open Source Software. I enjoy the benefits of using many open source products like NUnit, NCover, NAnt, etc. At the same time, I also believe that you need to be careful when modifying code in an open source product for use within the enterprise. Why? Because there are several hidden costs associated with modifying OSS that are not realized by your average company or developer. For the sake of this post, I am making an assumption that the developers making the modifications are not involved with and contributing back to the open source production in question (as I have seen this happen before).

The first of these hidden costs is the maintenance cost. When modifying an open source product, you have to think of the long term impact to the company of the changes you are making. As soon as you modify the source, your upgrade path becomes a bit more complex. Usually when a new version of a product is released, you can install the new version, do some testing of your dependencies and call it good (granted, this is, at at times, a gross oversimplification of the process (especially when there are API changes in that upgrade)).

However, when a new version is released of an open source product that you have custom modified for your company, you now need to not only upgrade the code but also make sure that the changes you made before are brought over if necessary. If the change is small, this may be manageable. However, if the change is not trivial this can be a huge investment of development time (that most likely could be better spent elsewhere). What happens if there was a good amount of refactoring that took place in the new release? Well, now you have to do the investigation again to understand the new code base and make any necessary changes again. To complicate matters, what happens in the all-too-common case of when the original developer has moved on and is no longer at the company. Now you're requiring the person(s) doing the upgrade to not only comprehend what and how the original changes were made, but to also understand how those changes are integrated into the new release (and remember, reading code is a lot more difficult than writing code).

Another hidden cost that is not often realized is a cost that younger developers are susceptible to. When developers become eager to modify source code and lean toward modifying source code as a solution to every problem, their skills as integrators are often degraded. One thing I have learned when working with Enterprise software is the rule "if it ain't broke, don't fix it". There has been a lot of time put into writing that code base and getting it to work the way it is. If the company needs to use that product with some additional functionality and you can provide the additional functionality without modifying the existing source code base, do it :). Please realize though that this is just a _general_ rule and is dependent on the context of the necessary changes.

The impact of this degradation of skill becomes more obvious when it comes to maintaining the company's current code base. I believe an important object-oriented development skill is to be able to write code that adds functionality by extension, not through modification (check out the Open-Closed Principle if you're not familiar with this concept). When your first tendency as a developer is to _modify_ the existing code to do what you need to do instead of _extending_ that same code, I believe you are doing the company an injustice as you are introducing more risk into the change. If the change you are making is similar to changes that have been made in the past, you should contemplate refactoring the code base so that the changes (and future changes along that same vector) are done through extension instead. To me, it's a sign of a mature and pragmatic developer to think along these lines. But then again, I'm still a youngin' and I'm sure some of you might disagree with me on this point.

So, is modifying OSS a "Bad Thing"? Not at all. You just have to realize that modifying the code comes with some added responsibilities. Can the company handle those added responsibilities? If your company can handle these and has the capacity to manage the upgrade path, then you can do so if necessary. Just remember though, just because you can modify the software doesn't necessarily mean you should. Are you and the company ready to pay the costs for your decision?

Posted in Programming
 #       Comments [3]
# Tuesday, January 31, 2006
I just came across this post of Hanselman's lately. It appears that Jamie Cansdale added some more functionality to TestDriven.NET. Now you can actually run your tests within Visual Studio with Test Coverage results directly from TDD.NET. Pretty darn cool I must say. I think it's time to plug this stuff in at work :).
Posted in Programming
 #       Comments [0]

Contact

Email Me Send mail to the author(s)

Calendar

<February 2006>
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
2627281234
567891011

About this site

Jason Olson's thoughts on Programming, Games, Music and Life in General

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2008
Jason Olson

Sign In
All Content © 2008, Jason Olson
Theme based on 'Business' created by Christoph De Baene (delarou)