December 26, 2010

Compiling DarkGDK and Visual Studio 2010

If you've tried using DarkGDK, the DirectX August 2007 SDK, and Visual Studio 2010 together, chances are that it has led to nothing but failure.

The biggest indication that you are having problems is when you try the simplest possible DarkGDK application...

#include "DarkGDK.h"

void DarkGDK(void)
while (LoopGDK())
} get "error C2061: syntax error : identifier '__RPC__out_xcount_part'" when compiling. Frustrating to say the least.

Solution? First, make a copy of the lib folder from the August 2007 DirectX SDK, uninstall the August 2007 SDK and install the February 2010 DirectX SDK.

Second, in your DirectX SDK's lib folder, make a copy of dxerr.lib and name it dxerr9.lib.

Third, open C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\baseclasses.sln and compile it targeting Release_MBCS so you can get strmbase.lib and strmbasd.lib. (No license to redistribute...sorry.)

Fourth, make sure you are using the October 2010 version of the DarkGDK libraries.

Fifth, rename multiplayer.lib in the DarkGDK lib folders to multiplayer_old.lib.

Finally, download this dummy multiplayer.lib to replace it. This will disable the built-in DirectPlay support, but you'll be able to compile, so it's worth it. (Dummy library built per the instructions in this thread.)

Once all is done, you'll be able to get DarkGDK to work just fine for everything except multiplayer.

December 4, 2010


My personal domain got hacked. Looks like they took advantage of a security vulnerability in Windows Server 2003 to do it. Did not want to be spending my weekend working on that site...

November 30, 2010

How Telerik Shot Their Customers

At work, we've been using Sitefinity for two years now. During that time, it has evolved from an unstable mishmash of components to a software package that many feel is enterprise ready at a price-point that was lowest in their competitive set ($899) and a great development story.

Last month, they announced their new pricing model, and there has been a bit of an uproar. We've had multiple conversations and phone calls with Telerik with no success trying to show them how they've essentially shot their customers in the face with this move. They announced their pricing structure change with less than 60 days notice, hardly enough time for any business to make a shift in their budget. They're supporting 3.x until 2013, but it's a dead-end development environment since 4.x is where they'll be focusing all of their energy. But the biggest reason that this is a horrible story for all involved is they have screwed users who need to convert from one edition to another in the interest of keeping things simple for themselves.

They have several differentiating features, and rather than make them key-unlocks for features or allow CAL's to extend concurrent users (more on this shortly), they decided to bundle everything into five versions. If you have any single data point that exceeds your version at any point, you have no choice but to upgrade, and those upgrade costs aren't pretty.

You're a small business user, and you need a second concurrent user or a fifty-first page? Depending on when you need that page or user, you'll be paying anywhere from $1,499 to $1,899 for that one piece of content. Standard edition and need a sixth editor or load balancing? Cough up $5,999 to $7,599. Professional edition and need an eleventh editor? $11,999 to $18,399 or screw you.

It does get worse. Industry best practices tell people to go for a single sign-on model when dealing with systems. Rather than go for the standard "named user" CAL model, they've gone with "concurrent users," and their definition is that even if you aren't editing the site, if you would normally have back-end permissions, you count against that concurrent user count even if you sign into the site. The new licensing model is forcing Telerik to tell people to go against industry best practices.

The Telerik CEO Complaint Thread on this is ~620k at the moment. I only see it growing, unfortunately. Telerik took all of the community goodwill that it had, and rather than gradually grow the price over time as their feature set grew and grandfather their supporters, they stomped on the community that got them to where they are in hopes of playing with the big leagues.

The really sad thing is that they are already doing key unlocks. If you compare a Small Business version of Sitefinity 4.0 RC with an Enterprise version of Sitefinity 4.0 RC, guess what's different? The license file and a single .config file in the /sitefinity/configuration folder, and that second file is just metadata for their project manager. Their decision to restrict licensing in this manner shows that they have absolutely no regard for actual usage patterns. They could easily add in extra CAL support in their current architecture, but they choose not to, not because of their users, but because of their preferences. They could easily make load balance support, localization, workflow, etc., feature unlocks, but choose not to. They're quite vocal that they chose this route because they wanted to keep things simple for them. That's not a business plan. That's arrogance before the fall.

Best of luck to them. They'll need it.

September 29, 2010


I finally got around to updating the template for this blog.

I'm hoping to start blogging again. I've been making a lot of inroads lately in breaking out of the shell I've been in since leaving Ritual, and finally made peace with what happened back then.

Am I going to keep going on about what happened back then? Probably not. It sounds more and more like everyone involved back then wants to leave that chapter closed for good, and I see no reason not to go along with their wishes.

Regardless, it's good to be back.

June 7, 2010

Get All Sitefinity 3.7 URL's (SQL Server 2008)

Yes, my template is still messed up and probably will be until July.


You need to get all of the URL's of your pages in Sitefinity via a database query.


Recursive queries are your friend.

WITH Pages (ID, ParentID, Url, Title) AS
base.ID, base.ParentID, CONVERT(NVARCHAR(250), '/' + base.Name), content.Title
FROM sf_PageBase base (NOLOCK)
INNER JOIN sf_CmsPageContent content (NOLOCK) on base.ID = content.ID


base.ID, base.ParentID, CONVERT(NVARCHAR(250), Pages.Url + '/' + base.Name), content.Title
FROM sf_PageBase base (NOLOCK)
INNER JOIN sf_CmsPageContent content (NOLOCK) on base.ID = content.ID
INNER JOIN Pages ON base.ParentID = Pages.ID
SELECT ID, Url, Title FROM Pages

May 1, 2010


Please don't mind the template. I still haven't completely fixed everything after having my blog move. My hosting provider futzing with my settings hasn't helped any, given that due to a systems glitch I've been IP blocked for almost a week.

Regardless, things should be completely fixed within the next week or so.

WORKAROUND: Error Adding Web Service In VS2010

When adding a web service reference to a server behind a load balancer (for example, https://url converts to http://url:8081), you encounter an error similar to the following:

Microsoft Visual Studio
Metadata contains a reference that cannot be resolved: 'http://url:8081/WS/WebService.asmx?wsdl'.

There was an error downloading 'http://url:8081/WS/WebService.asmx?wsdl'.

Unable to connect to the remote server

A connection attempt failed because the connected party did not properly respo

First, verify you can get to the WSDL by opening your web browser and pulling the WSDL manually.

If your web service is, type in

If you are able to retrieve the WSDL, do the following:

Right-click on your project.
Select "Add Web Reference."
Enter the address of the web service with ?wsdl at the end.
You will get about a dozen popups with this text: "Do you want to view only the webpage content that was delivered securely?" Say "No."
Add the web reference.

Now you have the web reference and the proxy class created, but you won't be able to execute the web service request. Two more steps are required.

Click the "Show all files" button at the top of the solution explorer and expand out your Web References tree. Inside your web reference, you'll find a .WSDL file and a file named ""

Open the .wsdl file and find the wsdl:service area. Update the addresses listed there to be the true external name of the web service.

Open the file and also update the DiscoveryClientResult url field with the same value.

At this point, the web service will function.

March 20, 2010

Blog Changing Addresses Soon

Well, blogger is discontinuing FTP publishing, so this blog will be changing addresses soon.

As soon as I work out a kink related to where it's going, I'll share the new address.

This blog has moved

This blog is now located at
You will be automatically redirected in 30 seconds, or you may click here.

For feed subscribers, please update your feed subscriptions to

January 21, 2010

Worst. Product Description. Ever.

Go look at this product description over at Amazon and then look at the price. (For those who don't want to visit, here it is...)

High Quality Content by WIKIPEDIA articles! This article compares two computer graphics APIs: Direct3D is a proprietary API that provides functions to render three dimensional graphics, and uses hardware acceleration if it is available on the graphics card. It was designed by Microsoft Corporation for use on the Windows platform.OpenGL is an open standard API that provides a number of functions for the rendering of 2D and 3D graphics and is available on most modern operating systems. If hardware 3D acceleration is present, OpenGL can use it. OpenGL and Direct3D are both implemented in the display driver.

$57...for Wikipedia articles. Are they fucking stupid?

January 2, 2010

Ireland's Blasphemy Law

As many of you know, Ireland passed an extremely severe anti-blasphemy law. Atheist Ireland published a list of 25 blasphemous quotes to challenge the law. In the comments below the list, many people have chimed in with their own examples of blasphemy. Several comments have attacked the add-ons due to their language. I tried to reply, but the site was overloaded, so I decided to post my reply here.
For those who are concerned about the language being used in these comments, I thought I'd share my take on it.

There are generally four levels of blasphemy.

The first is the puerile: "Fsck God and the brain who came up with him." It fits the basic definition of blasphemy and while those who actually think are more offended by the language, simple people can and will be deeply offended by this simple statement.

The second is the deconstruction: "The Christian God cannot exist because it is internally inconsistent. Omnipresence and omnipotence contradict each other at various points." This also fits the basic definition of blasphemy as it directly attacks the belief. Fewer people are deeply offended by the deconstructions, but it does lead to extremely bad theology to try to weasel around the blocks as provided.

The third is artistic. You see many examples in the comments above from the likes of Tim Minchin, George Carlin, Tom Lehrer, and more. The Danish cartoons are prime examples of works of art being deeply offensive to a religion, so much that there are fatwas outstanding and even an attempted attack within the last twenty-four hours.

The last is reality. Reality itself is blasphemous to many religions and leads to all sorts of hand-waving and rigmarole. Evolution has mountains of empirical evidence showing that it really happens, but because the conclusions one must inevitably draw from it, many people of faith attack it as a religion in itself because those conclusions are blasphemous against their religion. Condom use is deeply blasphemous to the RCC because it allows sex without reproduction, and so they attack its use in Africa where they are trying to use condoms to restrict the spread of an AIDS epidemic. A direct translation of God's name (depending on who you talk to, Elohim, Jehovah, Yahweh, etc.) from Hebrew is offensive to many Orthodox Jews who use "Adonai" as a fill-in. Referring to Mohammad's marriage to a 9-year-old as pedophilia is deeply offensive to Muslims. The theory of gravity deeply offends die-hard Pastafarians.

I can understand being offended by a puerile comment. I can even understand being offended by a deconstruction or a piece of art. But when reality offends, there is no hope for your point of view.

Michael Russell
Dallas, Texas

Update: Got it posted as reply #496.