<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.2.1" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>CodeBot @ Work</title>
	<link>http://blog.markparuzel.com</link>
	<description>Segmentation Fault</description>
	<pubDate>Fri, 09 Jul 2010 13:19:36 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.1</generator>
	<language>en</language>
			<item>
		<title>On Visual Studio 2010&#8230;</title>
		<link>http://blog.markparuzel.com/2010/07/09/on-visual-studio-2010/</link>
		<comments>http://blog.markparuzel.com/2010/07/09/on-visual-studio-2010/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 13:18:05 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
		
		<category><![CDATA[C/C++]]></category>

		<category><![CDATA[win32]]></category>

		<guid isPermaLink="false">http://blog.markparuzel.com/2010/07/09/on-visual-studio-2010/</guid>
		<description><![CDATA[When I look at Visual Studio, I see a large toolbox that is well organized and labeled. Much so is the case with VS2010 as it was with its predecessor. However, my analogy is inadequate when it comes time to use VS2010 on a production level. To give you some back story, I&#8217;ve been using it since it [...]]]></description>
			<content:encoded><![CDATA[<p>When I look at Visual Studio, I see a large toolbox that is well organized and labeled. Much so is the case with VS2010 as it was with its predecessor. However, my analogy is inadequate when it comes time to use VS2010 on a production level. To give you some back story, I&#8217;ve been using it since it was in the beta stages and like all beta software, it had its ugly side. It&#8217;s flashy GUI makes the user feel like they are working with a paintbrush rather than a chisel. Yes, the GUI is hardware accelerated and relies heavily on the graphics card for its eye pleasing outfit. The anal minimalist side of me started screaming the instant I found this out. Why should a development tool be using the graphics card for anything??</p>
<p>I compare the jump from VS2008 to VS2010 like the jump from Windows XP to Vista. You went from a product that was designed to be fast and responsive to a lumber hulk of over designed and needless fluff that pegs your hardware when too many tabs are open. Visual Studio is supposed to be a tool, not a piece of art. When you start weighing it down with flashy effects and &#8216;themes&#8217;, it becomes something akin to a video game, not a development environment.</p>
<p>Moving on, I was under the assumption that the Microsoft team improved the short comings of VS2008. With VS2010, they actually took a step (or several steps) backwards. You get up-to-date Intellisense errors as you type your code (like C# does), which is great. However, if you try to look up a function declaration, it won&#8217;t be able to find it, even if it&#8217;s in the same file, 20 lines up.</p>
<p>On a brighter note, the team actually fixed multi-core compiles. If you have a quad core machine, it will properly utilize the cores and compile your source much faster. This I like. It has a built in testing environment that is much better than VS2008&#8217;s version. Code coverage actually works well. Custom visualizers work better now and won&#8217;t crash the IDE when a complex data structure is thrown at it (like a hashmap).</p>
<p>VS2010 has the potential to be decent but if you really want to jump head first into it, I would suggest you wait for a service pack.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.markparuzel.com/2010/07/09/on-visual-studio-2010/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Efficient Rendering, A La Mark.</title>
		<link>http://blog.markparuzel.com/2009/12/22/efficient-rendering-a-la-mark/</link>
		<comments>http://blog.markparuzel.com/2009/12/22/efficient-rendering-a-la-mark/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 01:19:06 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
		
		<category><![CDATA[Radiant]]></category>

		<category><![CDATA[3D Stuff]]></category>

		<category><![CDATA[C/C++]]></category>

		<category><![CDATA[Stuff]]></category>

		<guid isPermaLink="false">http://blog.markparuzel.com/2009/12/22/efficient-rendering-a-la-mark/</guid>
		<description><![CDATA[Rendering efficiently is one of those topics that is widely spoken about in the world of 3D graphics. Asking a question like &#8216;What is the best way to render a bunch of Objects&#8217; is as open ended as asking &#8216;What is the best way to cook chicken soup.&#8217; It is all based on application and [...]]]></description>
			<content:encoded><![CDATA[<p>Rendering efficiently is one of those topics that is widely spoken about in the world of 3D graphics. Asking a question like &#8216;What is the best way to render a bunch of Objects&#8217; is as open ended as asking &#8216;What is the best way to cook chicken soup.&#8217; It is all based on application and preference and in all likelihood, there is no universal answer to this question. However, there are a series of specific solutions to this problem that can help in creating a mechanism that is best for the particular situation.</p>
<p>My problem is rather generic and will require a generic solution. I have a bunch of objects that need to be sorted by certain criteria in order to minimize state changes. It has to also support Shaders (Cg in my case) and it should minimize Shader state change between object rendering. Furthermore, an object must be generic enough to support complex models with bones and animations. On top of that, it should be easy to use. To start, we might need to break this down into smaller parts.</p>
<p><strong>Objects:</strong><br />
For the time being, lets refer to an Object as a list of vertices inside a vertex buffer. It may or may not be accompanied by an index buffer, but in most cases it will. This Object will be shuffled to the graphics card to be rendered for each Object that exists in our world. This is inevitable until we support something complex like hardware based instancing.</p>
<p><strong>State Changes:</strong><br />
Unless you want all objects to be rendered in the same way, in the same spot, and with the same vertices, you probably want some sort of state change. A state change is a change in any part of the system, whether it is the position of the camera, a new Object to be drawn, or a new effect. To quantify a state change, it is best to organize it into the types of state changes: swapping Render Targets, Shaders, Technique, Shader parameters, and using a different vertex or index buffer to draw an object. The order of the state changes, as listed above, matters because the changes at the beginning of the list are the most expensive and the changes at the end of the list are least expensive.</p>
<p><strong>The RenderGraphNode:</strong><br />
This is a generic interface to which many types of nodes will be derived from. Each derivation of the node will be the embodiment of the changes listed above. In addition to the state change, the node will also be a container for child nodes. Usually the node will be generic enough to contain any type of node. However, in our case, we want to preserve an order to our nodes so that we optimize the state changes. The root of our tree will be a change in Render Targets. For the most part, there will only be one Render Target, the backbuffer (our screen). When a child node is added, it will automatically be sorted into the correct place in order to minimize the state change. This is especially important for Shader parameter changes because there can be multiple parameters in one Shader.</p>
<p><strong>The RenderGraph:</strong><br />
In order to encapsulate all this, I need a class that will be the owner of Render Targets. It will be the only thing passed into the Renderer for drawing. At that point it will traverse the tree and render.</p>
<p>Sounds simple right? Yeah, but something doesn&#8217;t feel good about this design.</p>
<p>If we leave the design at this point, we are left with a bunch of nodes in which the user has to put together. This design is acceptable by some. In fact, OpenSceneGraph uses such a design for its SceneGraph. It is a bunch of classes that fit together in a tree fashion. Throw in a Visitor pattern into the mix for easy iteration and you have an engine. I&#8217;m not quite as happy with that design as my OpenSceneGraph counterparts are. The problem is, in my eyes, that it&#8217;s very verbose. Putting together a simple scene with an airplane in it was quite lengthy. You have to add a GeometryNode to a TechniqueNode to a ShaderNode to a RenderingTarget, and so on.</p>
<p>So back to my original question, what is the best way to implement something like this? When I figure it out, I&#8217;ll write about it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.markparuzel.com/2009/12/22/efficient-rendering-a-la-mark/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A Simple Opponent</title>
		<link>http://blog.markparuzel.com/2009/12/03/a-simple-opponent/</link>
		<comments>http://blog.markparuzel.com/2009/12/03/a-simple-opponent/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 23:08:28 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
		
		<category><![CDATA[AI]]></category>

		<category><![CDATA[The Mortal Realm]]></category>

		<category><![CDATA[C/C++]]></category>

		<guid isPermaLink="false">http://blog.markparuzel.com/2009/12/03/a-simple-opponent/</guid>
		<description><![CDATA[The current game project, &#8220;The Mortal Realm&#8221;, involves a battle system which is turn based and played on a hex grid.  Thus, it requires an AI opponent.  Currently, the outline of the AI mind is fairly simple.
Firstly, there is the long-term plan.  This is achieved via a genetic algorithm.  A computer player would have a [...]]]></description>
			<content:encoded><![CDATA[<p>The current game project, &#8220;The Mortal Realm&#8221;, involves a battle system which is turn based and played on a hex grid.  Thus, it requires an AI opponent.  Currently, the outline of the AI mind is fairly simple.</p>
<p>Firstly, there is the long-term plan.  This is achieved via a genetic algorithm.  A computer player would have a number of units, up to ten, that can be fielded into a battle at any given time.  The genetic algorithm determines the long-term goal of each unit.  Note that, this does not determine the turn to turn actions of a unit.  The general setup of this one goes like this:</p>
<p>a) The Solution Representation is, like most other genetic algorithms, an array, where each slot represents the long term goal of a unit.  The long-term goals are typically actions such as &#8220;Take and Hold x Position&#8221; or &#8220;Set up Ambush at x Position&#8221; or &#8220;Charge recklessly at the enemy army&#8221;.</p>
<p>b) Mutations simply change a value of a long-term goal in a random slot inside a solution.  For instance, slot 6 might be &#8220;Take and Hold x Position&#8221;.  It could change to &#8220;Take and Hold y Position&#8221; or &#8220;Set up Ambush at x position&#8221;.</p>
<p>c) Crossover is a simple single point crossover.  Choose a random slot, between 1-10, as the crossover point.  The first child takes all the genes of the first parent before the crossover point and all the genes of the second parent after the crossover point.</p>
<p>As a simple explantion, the genetic algorithm works something like this.  First, you have a population of solutions.  In my case, that means I have a collection of arrays, each array representing a long-term battle plan.  Each slot in an array is considered a gene, the long term plan for a single unit.  The initial population is created at random, that is, the solutions I come up with are completely arbitrary.  Then, I have a method, called the objective function, which calculates the value of a solution.  This objective function takes into account the terrain, the position of enemy troops and also the particular arrangement of friendly troops.  Noting that I have to take into account the arrangement of friendly troops, you cannot calculate the value of a gene independently because it changes based on what the other genes are.  So now I have a population of randomly created &#8220;individuals&#8221; (solutions) and I have a way to calculate their fitness with my objective function (que Nazi references).</p>
<p>Next, you create the next generation of individuals.  This is a stochastic process based on fitness.  The more fit an individual is, the more likely it gets to reproduce.  In order to create offspring, two individuals are selected at random, with a higher preference given to people who have higher fitness.  They then create offspring via the crossover method.  Two parents produce two children via crossover (ie. each child will somehow share the genes of its parents).  After enough offspring is created for the next generation we then check if any will undergo a mutation.  Unlike real-life, genetic algorithms do not allow mutations to produce non-viable offspring.  A mutant is always viable.  However, the rate of mutation is very low.</p>
<p>Now you have the next generation of offspring, some of which may have mutated.  Then you decide which of the parents and offspring survive to make the next generation.  Like before, it is a stochastic process where individuals are randomly chosen, with a preference toward higher fitness levels.  Then once this is complete, you repeat the process.</p>
<p>Once you are done (it may take hundreds of generations to produce a good solution) you&#8217;ve proven evolution.  Also, we have a long-term battle plan for the computer opponent.  This battle plan shapes the turn to turn actions it takes with its units, as it tries to stick to the plan and also react to transient issues.  Next post, I&#8217;ll talk about how the computer opponents determines its turn to turn actions for each unit.</p>
<p>-Alex</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.markparuzel.com/2009/12/03/a-simple-opponent/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Blog++</title>
		<link>http://blog.markparuzel.com/2009/12/03/blog/</link>
		<comments>http://blog.markparuzel.com/2009/12/03/blog/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 22:08:30 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
		
		<category><![CDATA[The Mortal Realm]]></category>

		<category><![CDATA[Radiant]]></category>

		<category><![CDATA[3D Stuff]]></category>

		<category><![CDATA[C/C++]]></category>

		<category><![CDATA[Stuff]]></category>

		<guid isPermaLink="false">http://blog.markparuzel.com/2009/12/03/blog/</guid>
		<description><![CDATA[I&#8217;m converting my blog to something a bit more useful. My long rants about my game engine were all leading towards a game of some sort. In the process I have recruited a friend to help me realize that dream. So, give a kind welcome to Alex.
Our first title will be a strategy turned-based war [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m converting my blog to something a bit more useful. My long rants about my game engine were all leading towards a game of some sort. In the process I have recruited a friend to help me realize that dream. So, give a kind welcome to Alex.</p>
<p>Our first title will be a strategy turned-based war game by the name of &#8216;The Mortal Realm.&#8217; It will feature my 3D engine and a robust battle system. As far as complexity goes, this game is one of the simplest we have come up with. It&#8217;s a simple point and click style of game with very minimal artwork. I&#8217;m hoping it will be a great test bed for my engine as well as Alex&#8217;s AI.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.markparuzel.com/2009/12/03/blog/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Food Budgeting</title>
		<link>http://blog.markparuzel.com/2009/09/07/food-budgeting/</link>
		<comments>http://blog.markparuzel.com/2009/09/07/food-budgeting/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 17:18:47 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
		
		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[C/C++]]></category>

		<category><![CDATA[Seneca]]></category>

		<guid isPermaLink="false">http://blog.markparuzel.com/2009/09/07/food-budgeting/</guid>
		<description><![CDATA[A food budget is a little bit different then a financial budget because you are budgeting quantities of ingredients rather then a lump sum of money. It is something that my wife just introduced me to and I am very excited to start doing it. Say you purchase a pound of ground beef but you [...]]]></description>
			<content:encoded><![CDATA[<p>A food budget is a little bit different then a financial budget because you are budgeting quantities of ingredients rather then a lump sum of money. It is something that my wife just introduced me to and I am very excited to start doing it. Say you purchase a pound of ground beef but you only use up half of it. For example, rather then making the same dish again in order to use up the rest of the beef, you could make another dish with that exact amount of beef. However, she is having a difficult time trying to manage the data especially when you have more then one or two ingredients to work with.</p>
<p>So, I&#8217;m setting out on a journey to build her an application that would manage a database of ingredients. It would link the ingredients table with a table of recipes, making it easy to search. To be honest, I&#8217;m not a database person. In fact I have not done any DB work since first year at Seneca. I might need to pull out my old text books in order to re-learn how to use a DB. I&#8217;m thinking of using SQLlite for the back end and straight up C++ on the front end (though C# has crossed my mind). It will be all open source obviously.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.markparuzel.com/2009/09/07/food-budgeting/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Too Busy&#8230;</title>
		<link>http://blog.markparuzel.com/2009/07/03/too-busy/</link>
		<comments>http://blog.markparuzel.com/2009/07/03/too-busy/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 21:13:38 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
		
		<category><![CDATA[Stuff]]></category>

		<category><![CDATA[Seneca]]></category>

		<guid isPermaLink="false">http://blog.markparuzel.com/2009/07/03/too-busy/</guid>
		<description><![CDATA[I&#8217;ve been pretty bad at keeping my blog up to date as of late. With my wedding just around the corner, most of my time has been wasted planning things and what not. I found myself wishing for an extra hour or two a day just so I could fit in all the stuff that [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been pretty bad at keeping my blog up to date as of late. With my wedding just around the corner, most of my time has been wasted planning things and what not. I found myself wishing for an extra hour or two a day just so I could fit in all the stuff that I like doing, such as programming and reading books. But, alas, it is an important part of life that requires a great deal of effort. And there is really nothing I can do about it (perhaps eloping would be easier) - everything, and I mean <strong>everything </strong>costs money.</p>
<p>I&#8217;m nearing my one year anniversary at McAfee (amongst other things) and finally I am at a comfortable stage in my life. I have a stable job which does not work me to the bone. I couldn&#8217;t be happier with it. But, my financial situation is inching closer and closer to the red line, all because my expenses as of late have been sucking my savings up. One of which was the purchase of a new house in Hamilton. So, I&#8217;m looking for a way to get a few more bucks. I started looking into something that has interested in for quite some time - Teaching.</p>
<p>Hamilton is home to Mohawk College. I attended this school before going to Seneca College and found it a decent place to learn. Though, after learning of what they had to offer I opted out for the Computer Programming stream at Seneca. What interests me is not the full-time position but night school, part-time classes. A teacher at Seneca told me that Ontario requires its colleges to have a certain amount of professors with a Masters degree or higher. But only for day school and only in their core streams. Night school, however, does not have that requirement but I bet having a Masters looks good when applying for a teaching position. My Bachelors might be beaten out of a teaching position by someone with more educational experience. So I&#8217;m hoping my experience working will carry some weight.</p>
<p>On Mohawk&#8217;s webpage they specify a few courses that interst me (if they are available in night school). These are &#8216;Introduction to C,&#8217; &#8216;Object Oriented Design,&#8217; and so on. Being first year courses, I fear that they might not be available in night school. I will be contacting the head of the Computer Department at Mohawk with regards to this. If anyone from Seneca or perhaps, any other college in Canada, can offer advice, it would be greatly appreciated.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.markparuzel.com/2009/07/03/too-busy/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How Do Patents Apply To Me?</title>
		<link>http://blog.markparuzel.com/2009/03/26/how-do-patents-apply-to-me/</link>
		<comments>http://blog.markparuzel.com/2009/03/26/how-do-patents-apply-to-me/#comments</comments>
		<pubDate>Thu, 26 Mar 2009 16:05:37 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
		
		<category><![CDATA[Radiant]]></category>

		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[3D Stuff]]></category>

		<category><![CDATA[C/C++]]></category>

		<category><![CDATA[Stuff]]></category>

		<guid isPermaLink="false">http://blog.markparuzel.com/2009/03/26/how-do-patents-apply-to-me/</guid>
		<description><![CDATA[I&#8217;ve been diligently working on a scene partitioning system which combines an Octree with a Uniform Grid. Basically, the way it works is that you build a loose Octree, which starts 4 levels deep. When each node reaches a critical mass, it subdivides into another level. The max levels you can have (While still being [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been diligently working on a scene partitioning system which combines an Octree with a Uniform Grid. Basically, the way it works is that you build a loose Octree, which starts 4 levels deep. When each node reaches a critical mass, it subdivides into another level. The max levels you can have (While still being optimal) is 7. So, let&#8217;s assume that we have a detailed scene with a 7 level Octree. At the bottom of the Octree, each node is 128th the size of the entire area you are encompassing and it is also uniformly proportional to the entire area. You can build a Uniform Grid out of the bottom most nodes giving you the best of both worlds.</p>
<p>When all this is built, to add and remove items from the grid is a matter of doing simple division of finding out the exact spot in the Uniform Grid where the object belongs. Since pointers are being shared between Octree Nodes and Uniform Grid Nodes, you essentially add an item to the Octree in O(1) time (Adding to a Tree structure usually Takes O(Log n) time). Collision detection with simple objects is O(1) time while with complex objects it is O(Log n) time. What I have done is made the Octree a bit faster in some areas. Good idea, isn&#8217;t it?</p>
<p>Here is my problem. While randomly googling on this topic, I found a <a href="http://www.wikipatents.com/7002571.html">patent</a> for this idea. The patent is very similar to what I just described. What I want to know (For all you Law junkies out there) is how does this effect me? Can I get sued? Does it matter that my implementation is my own and not copied from the patent? Does it matter that my implementation is Open Source? Are there ways to get around this patent (My implementation is different but algorithmically similar)?</p>
<p>Any suggestions are welcome.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.markparuzel.com/2009/03/26/how-do-patents-apply-to-me/feed/</wfw:commentRss>
		</item>
		<item>
		<title>U.S. And Human Rights</title>
		<link>http://blog.markparuzel.com/2009/02/27/us-and-human-rights/</link>
		<comments>http://blog.markparuzel.com/2009/02/27/us-and-human-rights/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 17:08:40 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
		
		<category><![CDATA[Stuff]]></category>

		<guid isPermaLink="false">http://blog.markparuzel.com/2009/02/27/us-and-human-rights/</guid>
		<description><![CDATA[I knew that the U.S. had some Human Rights problems itself but it came as a shock to me that U.S. has a long and painful record of Human Rights violations. Even if you are not into politics, it makes for a very enlightening read.
]]></description>
			<content:encoded><![CDATA[<p>I knew that the U.S. had some Human Rights problems itself but it came as a shock to me that U.S. has a long and <a href="http://news.xinhuanet.com/english/2007-03/08/content_5817027_6.htm">painful record</a> of Human Rights violations. Even if you are not into politics, it makes for a very enlightening read.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.markparuzel.com/2009/02/27/us-and-human-rights/feed/</wfw:commentRss>
		</item>
		<item>
		<title>I&#8217;ve Been Busy&#8230;</title>
		<link>http://blog.markparuzel.com/2009/02/07/ive-been-busy/</link>
		<comments>http://blog.markparuzel.com/2009/02/07/ive-been-busy/#comments</comments>
		<pubDate>Sat, 07 Feb 2009 15:04:29 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
		
		<category><![CDATA[Stuff]]></category>

		<guid isPermaLink="false">http://blog.markparuzel.com/2009/02/07/ive-been-busy/</guid>
		<description><![CDATA[I always hated the holidays. Christmas is probably the worst time of the year and what makes it so is all the rushing and running around and pointless stress. Giving and spending time with your family should be the focus of Christmas, not some faceless marketing campaign. On top of all this, I moved back [...]]]></description>
			<content:encoded><![CDATA[<p>I always hated the holidays. Christmas is probably the worst time of the year and what makes it so is all the rushing and running around and pointless stress. Giving and spending time with your family should be the focus of Christmas, not some faceless marketing campaign. On top of all this, I moved back to Hamilton. I should note that if you&#8217;re planning on moving in the middle of the winter time, make sure you do it on the warmest day possible. This was our second move on one of the coldest days of the year and it was the least bit pleasant. Regardless, all is well now and I have the next 10 months to recuperate.</p>
<p>I got my hands on a copy of Windows 7, and I am not impressed. It is, hands down, Vista Service Pack 2. Vista never impressed me, and Windows 7 is barely an upgrade from that. I have to admit, some of the features it has run faster, as they should, and are generally more efficient. For example, I run Windows 7 in VMWare. This VMWare image is being hosted by a Vista Machine running on raw hardware. Even though Windows 7 is virtualized, it still runs faster then Vista on raw hardware. Not only that, all the settings are buried so far away from the user that it becomes absurd. Changing network settings takes twice the amount of time as it used to (and this is not including the UAC pop-ups). As a word of advice, if you&#8217;re a poweruser and you want to have ease of use, stick with Windows XP, or 2000. If you are a Vista lover, Windows 7 is for you. Basically, ditch Vista by going back to XP/2K, or upgrade to Windows 7 once it matures.</p>
<p>On a side note, on the off chance I will upgrade to Windows 7, I have been looking for alternate shells and some seem promising. I&#8217;d rather have a shell that is poweruser friendly and fast. Litestep is one such product. Unfortunately, there is no way to actually replace all the functionality of explorer so there will be some annoyances. Linux is looking much better each time I look at Vista or Windows 7. With the way this post is going, maybe I should rename my blog to <a href="http://littlesvr.ca/grumble/">Grumble Grumble, Things that piss me off</a>.</p>
<p>I&#8217;m currently looking into a thing called &#8220;Visual Studio Visualizers.&#8221; They are small scripts that allow you to modify the way the debugger displays information. I&#8217;m not done my research yet, but expect a nice big article on this. It&#8217;s barely documented and really cool :).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.markparuzel.com/2009/02/07/ive-been-busy/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Radiant Update</title>
		<link>http://blog.markparuzel.com/2008/11/10/radiant-update/</link>
		<comments>http://blog.markparuzel.com/2008/11/10/radiant-update/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 04:25:20 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
		
		<category><![CDATA[Radiant]]></category>

		<category><![CDATA[3D Stuff]]></category>

		<category><![CDATA[C/C++]]></category>

		<category><![CDATA[Stuff]]></category>

		<category><![CDATA[win32]]></category>

		<guid isPermaLink="false">http://blog.markparuzel.com/2008/11/10/radiant-update/</guid>
		<description><![CDATA[I held a bet with my brother to see who can guess the number of lines of code (or at least, close to it) my rendering engine is comprised of. Neither of us were close but I got a good sense of how much work went into this giant mash of code. About 25,000 lines [...]]]></description>
			<content:encoded><![CDATA[<p>I held a bet with my brother to see who can guess the number of lines of code (or at least, close to it) my rendering engine is comprised of. Neither of us were close but I got a good sense of how much work went into this giant mash of code. About 25,000 lines is the total. That total is comprised of approximately 12,000 lines of computational code and about 13,000 lines of comments. This number does not include blank lines and such things. Regardless, it&#8217;s a staggering number for a project that is being worked on by one person, part time.</p>
<p>The engine itself is about 45% complete, with the majority of planning done. One of the components, my math module (it handles math stuffs and collision detection), is finally finished. I can breath a sigh of relief, it&#8217;s not easy stuff. Unfortunately I didn&#8217;t write any unit tests for it so I don&#8217;t know if it actually works or not. The project is open source. So, if anyone is masochistic enough to write a tests for my math module, by all means :).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.markparuzel.com/2008/11/10/radiant-update/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
