# Wednesday, 03 June 2009

I’ve been a fan of SharePoint since WSSv2 first came out.  Development on the platform wasn’t all that great though.  Things changed in a big way with WSSv3, and had I known just how easy things had become, I would have started this project a long time ago.

After being introduced to Trac a few years ago, I immediately set up a site and linked it to my private repository.  Having a wiki and source browser tied together can be immensely useful.  The one thing I’ve always had an issue with regarding Trac is how it supports documents (barely at all).  You can attach them to pages or put them in your repository, that’s it.  SharePoint, however,  was designed for document management; it just doesn’t have a way to browse a source repository.  I decided to fix that.

After fetching SharpSvn I set about figuring out how to get it integrated with SharePoint.  Eventually things came together, and I ended up with this:


That wasn’t enough though.  I needed to be able to view those files too, and of course I wanted syntax highlighting.  I don’t remember how I found this, but it works great.  A bit more tinkering and…


Just need to do a bit of clean up and finish making the UI seamless with SharePoint.

posted on Wednesday, 03 June 2009 15:08:00 (Central Daylight Time, UTC-05:00)  #    Comments [0] Trackback
# Tuesday, 17 February 2009

So I’ve been motivated to work on Decal lately for some reason.  Maybe it was Virindi and Flynn talking about it; maybe I was just bored with my other projects.  I spent a few days on bugs here and there, hopefully fixing the vendor bug in adapter and another one with world iterators, and decide to test some of my own plugins.  Of course the biggest one is QuickBuff, since it’s the least simple, and of course it crashes horribly whenever I click start.  It seems somewhere along the line the ‘magic’ COM-thread marshaling quit working.  I’m not sure if it’s because of Vista or a recent .NET update, but either way, QB was dead.

I knew the issue was thread marshaling because the error was obvious:  COM Interface not found.  Of course I don’t want to debug this issue because I don’t really know how Mekle fixed it in the first place.  Instead I start converting everything to use the Invoke method that was already present in my framework to move all COM calls to the main thread.  After half a day of refactoring my task class everything looks good.  Until I get around to testing things.  It looks like my Invoke method isn’t working at all.

It turned out that I didn’t do enough research when I was looking up synchronization methods.  I had found and decided on the SynchronizationContext object, but the class doesn’t actually do anything.  Apparently it’s meant to be more of an example to implement a custom sync context.  After many, many false starts and even more crashes, I eventually went back to the good old Control.Invoke method.  I wanted to avoid this to keep from having a dependency on System.Windows.Forms, but aside from implementing my own sync context, I didn’t have much choice.

All said and done, this turned out to be a great batch of work.  The plugin is way faster and smoother than it was before and seemingly more stable too.  I even went ahead and implemented the adhoc/smart buffing feature, and I’m considering going forward with rebuilding the profile editor using the current view system.

I’ll do a release after I clean up the adhoc view some more, probably this weekend.

posted on Tuesday, 17 February 2009 14:58:08 (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback
# Monday, 09 February 2009

Words just cannot express…

posted on Monday, 09 February 2009 16:12:00 (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback
# Thursday, 22 January 2009

So a dev buddy popped a question in IRC the other day.  He was trying to host an ad/offer thing inside of an iframe, but the offer checked for this and redirected the top page to itself.  He had been wracking his brain trying to work around this, and it looked like an interesting problem, so I stepped up to the plate.

First we attempted to simply overwrite location.replace with an empty function.  This seemed to work on IE but did nothing on FF3.  It also became apparent that this method would fail as a subsequent refresh gave us different javascript that simply changed the location.href.  FAIL.

I did a bit of googling on the issue and stumbled across a forum post suggesting the use of onBeforeUnload on the parent page.  I played around with this idea, getting mixed results, but since there seemed like no other way, I dug a bit deeper.  I was trying to do this by hand, with no libraries, and decided to bring in a little help since I didn't care to handle all the x-browser event nonsense.  I loaded up prototype.js and reworked my code to use it.  The following emerged:

function windowUnload(evt) {
var ifr = $('ifr');

if (ifr == evt.element()) {

Event.observe(window, 'unload', windowUnload);
$('ifr').observe('unload', windowUnload);

The id 'ifr' is the iframe holding the offer/ad.  This also manages to prevent any unload checks that the embedded page might popup.


posted on Thursday, 22 January 2009 14:45:01 (Central Standard Time, UTC-06:00)  #    Comments [2] Trackback
# Thursday, 08 January 2009
He’s finally here!! Well, I’m a slacker really, since he’s been here for 6 weeks now. Enjoy a few pictures!
posted on Thursday, 08 January 2009 15:21:00 (Central Standard Time, UTC-06:00)  #    Comments [3] Trackback
# Friday, 24 October 2008
So we had a 3D/4D ultrasound done week before last. I feel like such a slacker for not having these and all of the others posted sooner. Below are some of my favorites from the batch we had done.
posted on Friday, 24 October 2008 15:50:00 (Central Daylight Time, UTC-05:00)  #    Comments [2] Trackback
# Friday, 29 August 2008

While we were in Florida we had been told to visit a restaurant called Boondocks.  They have some great burgers there and another really curious attraction:  Bread/Fry addicted fish...

posted on Friday, 29 August 2008 15:42:12 (Central Daylight Time, UTC-05:00)  #    Comments [0] Trackback
Back at the beginning of August, we spent a week in Florida. Below are some highlights.
posted on Friday, 29 August 2008 10:59:28 (Central Daylight Time, UTC-05:00)  #    Comments [0] Trackback
# Friday, 16 May 2008

A couple of months ago, my wife and I found out that we were pregnant.  We've been extremely worried for the past month because she was rear-ended while driving to class one day, but now we know we're almost clear.  She had her first ultrasound yesterday, and we found out that we have a healthy, very bouncy, 3.6cm baby.  Being that she's at 10 weeks, we're almost done with the worries.  Once we clear the first trimester, the risk goes down a great deal.  I'm so excited that I can barely stand it, hehe.  So without further ado:

Hello World!

Hello Again

posted on Friday, 16 May 2008 16:29:38 (Central Daylight Time, UTC-05:00)  #    Comments [4] Trackback
# Tuesday, 04 March 2008

So we've been both working on and putting off the new view system in Decal for ages.  Checksum did a lot of work to give us something to extend, and we've been chugging along with that.  We have a couple of semi-usable controls, and a simple form/view loader.  The integration with Decal still lacks a great deal, but there's one very big problem with the system:  It's fugly.


Above you can see NVS or Decal.Forms in our test container.  It's not going to win any beauty pageants for some time.

We do have a powerful theme system that goes along with NVS though.  Once the controls stabilize, and we start working on performance, it shouldn't be hard to make things look great.  Of course, none of us have any artistic talent so it'll never look that good (unless we can con an artsy person into the core team).

In support of this effort (though mostly just so I can say I finally finished rewriting it) I've put some effort into reviving Portal Opus.  I had been sitting on the framework for ages now and decided a couple of days ago to go ahead and integrate Ken's DatUtils to speed up the progress (his spell table object probably saved me an entire night of coding easily).  Right now it supports all of the textures that Decal supports and loads the skill and spell tables.  I'm going to fool-proof it a bit and post an alpha in the near future.  After that, I'm going to start building a model viewer into it too.


posted on Tuesday, 04 March 2008 03:30:53 (Central Standard Time, UTC-06:00)  #    Comments [0] Trackback