Rev’s Thought Dump

A force for change

Or: How I got my co-workers to stop worrying and embrace Open Source.

Aside from the entire Voodoo Box ordeal, I was pretty happy about work on Friday. I’ve been working on a project at work that’s turned out to be a proof of concept for a number of technologies.

Usually when I mention Open Source at work - or to be fair any new technology - I get that “Oh that’s nice” half interest or a “That’s a good idea, maybe we’ll look at that” dismissal.

A little background. I work with Windows Installs a lot at work.. it’s my primary job - I’m transitioning to tools development, though. We used to use InstallShield exclusively but that become a real pain in the ass and a complete mess to maintain since it stores it’s “project files” in a binary format. Basically it takes and .msi file - microsoft installer database file - and renames it *.ism. Clever huh? When you “compile” it just basically resolves a lot of strings in the string table… creates file table entries dynamically and a couple of other mildly handy things and then makes a copy of the .ism as a .msi.

Well like I said it’s a binary format, which makes it impossible to track changes in source control. So after much half hearted discussion at work about an XML solution I came across WiX and said… hot damn.. we need to use this.. it’s written by the guy who worked on the MSI system itself - and a team of OSource Developer’s. I was met with the above mentioned responses and the idea that we’ve got what we’ve got and we’re locked into it.

So I sat down and wrote the installer for my project in WiX - as well as a generic template that our team could use for doing one off installers. Turns out they loved WiX and the way it allowed them to quickly and fairly painlessly generate installation packages. It’s XML based so you don’t have to learn a new tool. And it makes it easier to track changes.

We’re now doing all new installation packages with WiX and we’re actively porting all our current installs to WiX as well. Woo hoo! Feels good.

Next up… build scripts/systems. When I first started this job a little over 3 years ago we were just starting efforts to create a huge multi-server system and the installers were truly monolithic. While I was working on getting a handle on the whole project I wrote a Jscript file that would stage the compiled binaries for me and run the install compile. At some point I handed this off to the build engineer - that’s when we still had a dedicated build engineer - and said “Use this as a template for your build system for this project”.

Well, it’s 3 years later and we’re still using the same Jscript. Though it’s been mutated and bloated over time.. with bits of VBScript grafted to it and entirely uncommented and, in my opinion, unstable.

The build engineer that had been there started looking at NaNT as some point and I think he even did a small project with it. But when he left that build script wasn’t maintained but just run as part of a nightly build and NaNT fell into mystery.

I’ve been mentioning we need a new build system for a long while now. Our Jscript just isn’t robust enough and makes me gag when ever I think about it. But, like most things at work, there just isn’t time to adopt it. So again, I sat down and did my build script for my project in NaNT. And though it wasn’t met with as much enthusiasm as WiX it still impressed the heck out of me and it became fairly apparent that NaNT was the direction we wanted to head.

I admit my first go round with NaNT on my project was a little annoying to other developers because I was using NaNT itself to define the projects and dependencies and resources rather than just use the solution tag - just plain unfamiliarity with the system on my part. So the Solution/Project files fell into disuse and people working on different parts of the project got a little confused - not wanting to take time to learn NaNT. But I’ve fixed that since I got back from vacation and things should go a lot smoother.

Justin went ahead and used NaNT for his latest project and I’m pretty sure he’s in love with it as well. So the plan now is to slowly port the hack of a Jscript over to NaNT - though now that Justin has found the joy of NaNT maybe we’ll move a little faster on that. =)

This latest proof of concept goes hand in hand with NaNT. It’s the concept of automated continuous integration. Right now with most of our projects devs will pound away on code and do what ever personal testing - if any - before checking into source control and then we don’t see the effects of their code changes until our scheduled build or until someone forces a build.

I setup CruiseControl.Net for my project on the build machine. CruiseControl is pretty snazzy in that it constantly checks source control and will launch a new build once it detects a change and reports on the status. I don’t think I do it justice just rambling about it at 1 a.m. but this allows us to know the status of the build at any given moment. When the build fails it let’s us know and it let’s us know what changes have broken it. Immediate feedback.

CruiseControl has a web dashboard that allows you to view all the projects it’s currently manageing as well as a tray icon that will monitor the Cruisecontrol server projects and let’s you know their status at a glance. Building, failed, fixed again.. okay.. etc. etc.

You can launch any number of tasks like Nunit automated tests and it will report their outcomes in the reports posted on the web page. It goes on and on. You could setup a task to actually install the package on a test machine so everyone can test it. So many things that I’ve just started to look at.

So I’m hoping by setting this up I’ll get the folks on my team really into it and get our other projects setup.

I’m getting tired so I’m losing all the points I wanted to make when I first started writing what has turned into a book. =)

I’ll find out on Monday what everyone in the office thinks of the new system. And with any luck it’ll be another step towards order there. The sooner I can get the whole process more streamlined the sooner I can disappear into full time tools development. I managed to hardly touch an install the last ship cycle and it was blissful.

The next frontier to conquor is switching us off of Visual Source Safe and to subversion. It’s the dreamiest. =)

Time to sleep.

Grrr Stupid Me!

I let my cousin talk me into trying a couple more things on “The Box”. Utterly pointless. He tried to convince me that it was a power issue… like the wall socket - I’ve tired 3 different power supplies so I know it’s not the supply itself. So I went down stairs, like a fool and plugged it in across the room.

I still had the issue with windows BSODing because of the hardware change. Managed to boot to safe mode and have it not reboot on failure so i could read the message. Just some hex. No notice of what driver is failing.

So I booted to linux to check a web site to see how I could correct this without having to reinstall. A few minutes in I started getting the artifacts again. I just shut the thing down and walked away.

I need to just get the whole mess out of the house so I don’t look at it again. Love still wants me to get windows working so she can keep using it. Blah. I want to part the drives out to the linux server and call it done.

This is getting old to blog about too… I’ll blog about something else in a second.

  • 0 Comments
  • Tags:
  • *buzzz* times up

    I read a book once about a virus that infected systems and kept people working. It kept egging them on so that they were ALMOST finished. Someone would want to stop writing code… but they were ALMOST on the verge of a break through… they wanted to log off…but the process to logging of kept them doing things so that they never quite logged off. People were starting to die of malnutrition and that sort of thing.

    Well… I’m pulling the plug on my virus.

    Last night, with the old 2Gz CPU/Board in place I sat down to play some WoW. I went ahead and put the new card in that I decided to keep. That didn’t work… it didn’t even post correctly with that card. All scrambled. Maybe it didn’t like the 4x AGP. *shrug* So I put the old card back in and get to playing. Well… no sooner have I logged on than… yup… kalidascope of horrid graphics.

    So I laughed for a good long while. Not exactly a sane laugh either.

    Then it pulled me back in. What could the problem be? Well.. hrmm let’s see. The Monitor! Perhaps the DVI on the monitor is crap! So I shutdown and put the adapter on the card and plug into the analog port. Fire it up. And.. well it looks okay. Hrmm maybe I’m write. (See… see how it keeps dragging you along?)

    If it’s the DVI.. then I can put my old board back in and put the new card in and run it analog. So I tear everything out.. put the old board back together and put it all in. Well.. the new card still vomits on itself at POST. So I pull that and put the 9600XT back in. I boot up and find that I’m not so lucky going back to the AMD64, XP doesn’t want to boot. It flashes a blue screen full of text and then reboots before I can read what the issue is. In safe mode the event logs don’t contain any information on the error.

    I quickly just jump to linux and fire up WoW in cedega so I’ll at least know if I’m getting the issues on this board via analog. I thought I saw something.. maybe.. but I’m running through cedega and the graphics are really muted so it could probably just be low polygons in one area. *See how it fills you with just enough hope to carry on*

    So.. see.. here’s where I get brilliant… or rather.. where it drags me even further in. I grab the camera and take a video of the boot sequence… then I can boot to linux.. grab the video and frame by frame to the error message. Clearly at this point I’ve gone quite mad.

    I capture it.. switch to linux… and while I’m trying to get the video off the camera linux stars going nuts and windows vanish and then they’ll try and start but nothing comes up. Same old problems.

    At this point love comes home from knitting and I shut it all down in disgust and go to great her and pretend that, by this point, I’m not just stark raving crazy.

    So… I was going to just haul it to the garage and put the 800mhz linux box in it’s place - the video is a little shaky on that one.. maybe it was the KVM.. AHH!!! SEE SEE! It’s dragging me in again!

    But love wants windows. So… she’s convinced that the 64bit box is just fine when it runs windows so I should wrestle a copy back on and be happy with it. But.. I know.. you see.. I know that damn box is possessed. Nothing short of holy fire will cleans it of it’s gremlin.

    I’m going to get windows back on that system one way or another and let it be. I’ll just take my little 466 Celeron laptop and hide in the corner and write code.

    Some day I’ll get my tricked out laptop and then all of this… will just be a nightmare that I wake up from screaming in the night.

  • 0 Comments
  • Tags:
  • Okay… here’s the plan!

    I want the new card. Yeah. A guy at work wants a dual head hot card. But he can’t afford to buy this one off me. Soooooo… I’ll sell him the 9600XT, keep the 6600GT, and use the cash to buy the new 64bit motherboard. Pure genius!!! Or insanity… probably the latter.

    Ad Lib Software Creation

    Justin sent me an email about Ad Lib Game Development. Apprently it was a topic at FOO Camp this year. While I like the idea for game development I wonder how the style might be used for any sort of coding project. I know at SMUG we’ve done this for 6 hours at a time. But the idea of a 24 (oops 48) hour lock down is pretty cool.

    One night at SMUG we setup a projector on a machine and we all shouted suggestions, corrections, and code snippets while one guy drove. I had a lot of fun doing that and from there I started looking into eXtreme Programming.

    I’d host some of these hack-a-thons… but unfortunately I dwell far beyond the reach of any sane developer types.

    Here’s his email with links:

    Here’s the article I was talking about, which just outlines the reasons to do some sort of 24 hour code-a-thon to make something. I think it would be fun to get a few people together to do a C# game.

    Build Something Cool in 24 Hours

    A few other interesting links.

    Ad Lib Game Development Society
    Game in a Day

    My Precious

    Now I want to keep it.. want to keep… My Precious!! Why shouldn’t I?! It’s MINE!

  • 0 Comments
  • Tags:
  • In the end… it had to be done

    Well, since the new card tanked as well. It became pretty apparent that it was a MotherBoard/CPU issue. So… I pulled the motherboard and stuck the old Celeron 2Ghz back in. Fortunately XP went with it and just redetected hardware. When I’d gone from the 2Ghz to the 64bit I had to reinstall. So that was nice.

    It’s apparently worked. I don’t see any graphics issues and things seem stable. It’s pretty sad because this board has 4X AGP rather than 8 so WoW is mildly staggered. But… it’s running at 1680×1050 and it’s very playable. So I guess I won’t complain.

    Gonna RMA the new card in the morning and just be done with it all. I could make the vain effort and get the ASUS motherboard I should’ve gotten - Spits on MSI - but I don’t think I could take the frustration anymore. If this is going to be stable… let me play WoW once and while and let me write some code and work with graphics… then I’m just going to be happy with it for a while.

    Besides… if I can trim off those extra pounds I’ve promised myself a laptop… and… Oh what a laptop it’ll be. And if THAT doesn’t work I’ll shove it up the manufacturers arse rather than screw with all these parts.

    Oh well… more later.

  • 0 Comments
  • Tags:
  • And I Must Now Kill Myself

    Got the new card installed. Crapped out the same way. Now I must kill myself. I can’t take this anymore.

  • 0 Comments
  • Tags:
  • The Card Arrives

    It’s here… but I have dinner guests. So it sits in the box while I scan the manual and make sushi rice. Soon. Soon!

  • 0 Comments
  • Tags:
  • Here today, gone tomorrow

    No sooner had I added FlipCode to my links than they closed up shop. See site for details.

    Archives