Agile Development Practices Conference

Posted by Dave Bouwman | Posted in Agile | Posted on 29-11-2007

0

I’m super excited about attending the Agile Development
Practices Conference
in Orlando on December 5th & 6th.

In addition to showing a serious commitment to agile practices and software
quality on the part of DTS, what I really think is cool about this
event is that it will dig into some of the more technical aspects – testing
strategies, automated builds, refactoring etc. Since these things are
challenging when applied to regular .NET development, I’m especially interested
to get some ideas on overcoming some of the extra challenges the ArcGIS stack
adds into the mix (i.e. using mocks & fakes for a large interface based
API like ArcObjects)

And getting a chance to hear people like Scott Ambler, Roy Osherove, Mike Cohn, Tom and Mary Poppendiek, and Andy Hunt talk about agile development
should be great. I just picked up a new laptop today, so I expect to be
taking copious notes and likely more than a few blog postings while at the
conference. Hope to see some other GIS people out there as well!

ESRI Adopting Agile…

Posted by Dave Bouwman | Posted in Agile, ESRI | Posted on 28-11-2007

2

Just read an article on GISUser.com (also at GISCafe) about ESRI bringing on Dirk Gorter (formerly with Symantec) as new Director of Product Management. Here’s a quick quote:

Gorter’s focus is on implementing a product management process that is similar to the agile product development process commonly used by software development teams.

This is great news! Hopefully ESRI will be talking up agile as they go through their own changes. This level of exposure is sure to help raise awareness of the benefits of agile development within the broader geospatial industry – maybe we’ll see some ESRI people at the Agile Development Practices conference next week!

Serialize Geometry for Unit Testing

Posted by Dave Bouwman | Posted in .NET, ArcDeveloper, Unit Testing | Posted on 28-11-2007

0

Tonight added a few more projects to the ArcDeveloper Subversion repository up at Assembla (http://svn2.assembla.com/svn/arcdeveloper).

Since the goal of the ArcDeveloper.net open-source projects is to streamline unit testing for the ArcGIS developer, the logical place to start is with a methodology for passing geometries into tests.

The code that’s up there handles geometry serialization / deserialization. In addition to a set of classes which handle the “work”, it also includes 3 ArcMap tools:

  1. Serializing selected geometries to a file,
  2. Serializing a sketch to a file, and
  3. Drawing serialized geometries on screen so you can be sure you captured the right thing.

It also has a simple example showing how to write tests using this methodology.

I’m not going to go into a full-blown “how to” at this point, but the general flow goes like this:

  1. Use the tools in ArcMap to create serialized geometry files
  2. Add these files into your Test assembly as Embedded Resources
  3. Pull the geometries out of the test assembly when the tests are run.

This allows you to store all sorts of complex geometry scenarios without being reliant on particular spatial data sets residing at fixed locations – the data is embedded into the test assembly.

I will be posting a much more detailed “how to”, as well as adding content into the ArcDeveloper.net wiki.

Backlog Items

These will be added into TRAC when I get time, but here’s the quick list

  • Enable serialization of entire features
  • Add tests for the actual utility classes themselves
  • Improve the messaging
  • Make the Extension be a “JIT” extension so it’s easily enabled/disabled
  • Better exception handling (currently just MessageBoxes)

Project Status

If you are interested in following along with what’s happening on the project, I’ll be posting finer grained information on the “project flow” page, which like all good things has an RSS feed.

Data Transfer Solutions: My New Home

Posted by Dave Bouwman | Posted in .NET, Agile, Blogging, careers | Posted on 27-11-2007

3

Yesterday we sent out a press release via Chris Spagnuolo’s GeoScrum blog. Thus, I think it’s now ok to say that my entire team and I are now with Data Transfer Solutions.

DTS_small_web 

The team is super excited about the new opportunities this change brings (the blazing workstations, “green” servers and build out, IKEA workstationsgreat chairs, and a strong interest in adopting agile methods doesn’t hurt either!).

On the technology front, we are still sticking with .NET and ESRI for the most part. We expect to be doing much more web work than in the past, and with the release of Visual Studio 2008 and .NET 3.5 this will be very cool. I expect we’ll be working with ArcGIS Server / tile caches on the back end, as well as Virtual Earth and Open Layers for the client UI. Mix in some unit testing, and it should be lots of fun.

We’re also going to be adding some new capabilities – specifically Agile Consulting and Coaching. This is still in the early stages so I’ll be posting more about it as things develop, but I’m very excited about some things we have planned, and the opportunity to share our experiences, methodologies and practices with others.

I’ll wrap this up by saying that I’m also very excited to work with the existing DTS development team. Although I’ve only met a few of them, and only very briefly, but their depth and breadth of skills are pretty amazing – I heard that someone wrote some ArcGIS Desktop tools using Boo (scratching your head – here’s a hint: Boo is a Python-like scripting language for the ECMA CLR implementations such as .NET and Mono.)  I think they will be keeping us on our toes!

I’ll be posting more about starting up an office, and getting things rolling over the next few weeks. Some tasks on our current backlog - order & setup some servers, get a firewall (advice welcomed!), move out of Chris’s living room into our “temp” space, finalize the build out plans for our “real” space… fun!

Building the Rigs

Posted by Dave Bouwman | Posted in Hardware, Productivity | Posted on 26-11-2007

0

The Build

For details on building out a system, read Jeff Atwood’s posts re: building the Hanselman box (Part 1, Part 2, Overclocking). Since our parts list was virtually identical, his detailed photos and descriptions we’re awesome. Here are just a few shots of us putting stuff together.

chris-jeff

Jeff & Chris putting the stock heat sinks on the motherboards. The Scythe heat sinks were back ordered, so we’re going to wait until they arrive to overclock things…

mb-heatsink

Board ready to go into the case…

mb-case

Here’s a motherboard mounted just prior to the initial boot to make sure it’s all setup correctly.

install

By the end of Thursday, we had 4 systems built out, and the OS installation started.

On Friday we got our MSDN licenses and received our ESRI Developer Network kits. From there, we got the OS installed on 4 systems, and started running torture tests using Prime95. One of the systems has some stability issues (we’ll tear it down Monday when we build up the final system) and it looks like one of the WD Raptors was flaky. Other than that all is well, and everyone had quite a bit of fun. The next “big” thing is getting into a “real” office – but that will have to wait until after Thanksgiving.

ArcDeveloper Source Code: Visual Studio Templates

Posted by Dave Bouwman | Posted in .NET, ArcDeveloper, Visual Studio 2005 | Posted on 20-11-2007

1

In the last post, I said I’d post shortly so - here’s the skinny on the code that’s currently in the ArcDeveloper Assembla repository.

The VSTemplates Project

Back in September I posted about using MSBuild to package up Visual Studio Item templates. I’ve uploaded this code into the repository, and it’s ready to roll. The templates are setup for ArcDeveloper projects (i.e. an MIT license, “ArcDeveloper” etc.), but you can easily modify this and re-run the MSBuild script to create a set customized for your company / team.

At this time, there are just 3 templates – class, interface and non-COM class – with both C# and VB.NET flavors. I’ve got ideas for others, and will be adding more as they come up in my development.

Running MSBuild

If you have edited the templates, you’ll want to run the ArcDeveloper.Templates.Build file. Here’s how you do that:

  1. Edit the .build file so the SolutionDir and BuildFolder are correct for your machine.
  2. Open a Visual Studio Command Prompt
  3. cd to the folder with the .build file
  4. run msbuild arcdeveloper.templates.build

The build script will zip up the templates (as required by Visual Studio) and drop them into the BuildFolder. In order to have Visual Studio pick these up, you need to tell it where your Item Templates are. Go to Tools –> Options and select the Projects and Solutions item. Set the User Item Template location.

vs-settings

Now when you add an item to Visual Studio, you’ll have some additional options

vs-items

Get It!

If you just want the templates, you can download them from here: http://www.assembla.com/spaces/files/arcdeveloper

If you want to be able to build the templates, grab the code from Subversion: http://svn2.assembla.com/svn/arcdeveloper

Building Developer Workstations

Posted by Dave Bouwman | Posted in Productivity | Posted on 19-11-2007

3

Now that we’ve moved on, the first task in setting up the new office was to order some workstations. Since I’m an avid reader of Scott Hanselman’s blog, his Ultimate Developer Rig series immediately came to mind.

The timing could barely have been better – Scott worked with Jeff Atwood (CodingHorror.com) to build a rocking developer box. What they ended up with was a wicked fast, over clocked, nearly silent monster for less than $2000. You can read Scotts initial impressions here, but this is what stuck with me…

It’s ridiculously fast. The word “obscene” comes to mind. It’s working at least 80% of the speed of my thoughts (as opposed to 10-20% on my last PC.) I wait for little. Even opening a tab in IE7, once a chore that made me cry, happens instantly. — Scott Hanselman

Sounds good to me. Moving on…

Since they built this rig over the summer, we were able to up the ante a little, and still come in just around the $2000 mark.

Here’s a link to Scott’s part list. We just changed a few things.

CPU: The Need for Speed

We initially decided to build out exactly the Hanselman box, but then I did a little looking, and found we could get 3.0Ghz Dual Core CPU’s for the same price as 2.4Ghz  Quad Core CPUs.

Thus the debate what’s better for ArcGIS Development: 4 cores running slower, or 2 cores running faster? I Googled for “quad core vs dual core” and the top result is Jeff Atwood weighing in on this question. Read his post, but suffice to say he does a lot of testing, and cites other studies, but the punch line is that in most cases, you will be better off with a faster dual-core CPU than an quad core.

As far as Visual Studio 2005 is concerned, Jeff notes that there is no difference between dual and quad cores (scroll down on this review @ xtreview.com)

Back in GIS Land, since ArcMap is not designed for multi-core systems, it’s not going to benefit from extra cores – performance is going to be limited by the CPU speed. So if I’m mainly running Visual Studio and ArcMap, then a faster dual core CPU is likely the best bet. If I was to load up ArcSDE, SQL Server, ArcGIS Server, IIS, and Visual Studio on the same box, then I may see more bang out of the quad box, but we’ll be getting servers to run the heavy hitting parts of that stack. Dual core it is.

More Monitors

Since we’re starting from the ground up, we needed to get monitors. Two monitors is great, and really should be the minimum setup for any developer. The increase in productivity is enormous. How much better will 3 be? We’ll find out! Since the price of pretty much every part had dropped since their build, we were able to get each developer a 22 inch wide screen to be flanked by two 19 inchers, all from Acer. The photo below shows 15 monitors lined up at our temporary location (Chris’s living room)

monitors

Other than that, it’s pretty much the Hanselman rig. Big props to Scott Hanselman and Jeff Atwood for sharing the details of the build – this makes it much easier for others to dive right in and build great systems.

Our Part List (NewEgg.com):

Total: $1945

Amazing what you can get these days. By building them our selves, we saved ~$1500 per workstation over similar boxes from Dell (see below).

dell-system

ArcDeveloper Project @ Assembla

Posted by Dave Bouwman | Posted in .NET, Agile, ArcDeveloper, ArcGIS Devt | Posted on 19-11-2007

0

I had originally setup a SourceForge project for ArcDeveloper.net, but the whole SourceForge experience is clunky and web 1.0. So when I found out about Assembla, I immediately setup a project.

ad-assembla

Assembla is a really cool, free Subversion + TRAC + wiki + Scrum development tool / service. It’s really amazing. It’s totally free for projects up to 200Mb in size (which is a MOUNTAIN of source code).

ArcDeveloper Projects

A repository and some tools is nice, but a bigger question is what projects will be there. Well, my goal for ArcDeveloper is to provide a set of code resources that will make unit testing on ArcGIS projects easier. Since software quality is something that all developers must address, and since it’s the same regardless of your vertical market, I think that few organizations would object to using and contributing to this effort.

Getting Access

The repository is open for all users, just point your Subversion client to http://svn2.assembla.com/svn/arcdeveloper and you can get latest on everything. If you are not familiar with Subversion, Assembla has some handy starter info here, and you can Google for mountains of information.

Project Status (TRAC)

The project is managed in TRAC – since it’s a web based tool, you can access it here: http://trac2.assembla.com/arcdeveloper/wiki. There’s not a whole lot in there yet, but I’ll be posting about the inital project shortly.

Bug Reporting / Feature Requests / Contributing

You’ll need to be a member on the project to add a TRAC ticket. The easiest way to do this is to contact me, and I’ll send you an invite directly from Assembla. If you are already an Assembla member (sigh-up here – takes 30 seconds and it’s free), you should be able to contact me through the project’s team page. Either case, as far as I can tell, I have to invite you into a project – I don’t think you can “apply” to join.

Once you are a member of the project, you will also be able to contribute code.

So that’s it for now – as I said, I’ll be posting about the initial code base shortly…

Moving On…

Posted by Dave Bouwman | Posted in Life | Posted on 16-11-2007

4

As many of you know, I am Canadian, and I live in Colorado. After more than 10 years on a variety of work visa’s tied to an employer, this September, I finally got my “Green Card”. What this means is that I can now work for anyone, doing anything. Not that I’ve been yearning to flip burgers at a fast food joint, but now I could.

During the last few years – while the green card was “in processing”, I did some reflecting, and decided that while I enjoyed what I was doing, I really needed a change of pace, and vertical market. So after receiving the green card, I did a quick job search, and submitted my resignation on October 31st.

Agile to the End

For the past two weeks I have been working on documenting all my projects and responsibilities. In order to ensure this process went as smoothly as possible, the transition team utilized Scrum to ensure high-priority items were documented during the available time. All in all, the process went as well as could be expected given the circumstances.

My New Home

Today I started with the new company. At this time, we are still discussing what linkage (if any) there will be between them and my blog, so for now, they will remain nameless. I will say they are wicked-cool, and have been great to work with up to this point.

As for my role, I will still be designing & developing GIS systems using Agile methodologies. I expect that most of the work will be with the ESRI platform, but with a much larger focus on web-based solutions. I’m very excited about this change, and will be sure to post more in the coming days.

Thanks!

As I move on, I also wanted to say thanks to all those I have worked with over the past years (and especially the transition team) – I wish you all the best in the future, and look forward to catching up at conferences.

Moving To Subversion… Step-by-Step

Posted by Dave Bouwman | Posted in .NET, Team System | Posted on 12-11-2007

3

This week we finally completed our transition over to Subversion. As part of this transition, we moved 52 project out of a very old version of Source Gear Vault, and 13 project out of Microsoft Team System.

With this much code, we needed an automated way to clear out source control bindings. Our code base has 3 types of projects – Visual Basic 6, Visual Studio 2003 and Visual Studio 2005.

Here are the steps we followed:

  1. Get all source code out of both the Vault and Team System
  2. Backup the entire source tree (just in case!)
  3. Search for .scc files and delete them. This removes the bindings for VB6 projects
  4. Download SCC Remover tool from CodeProject.com. This will clean out the source control information in solution files (.sln), solution user option files (.suo) and the projects themselves (.csproj and .vbproj).
  5. Modify code so that it can recurse down a tree (see below), and run it.
  6. Open some projects in Visual Studio to ensure no bindings are present.
  7. Copy entire tree to new location like c:\svnload\code
  8. Create an svnimport script - I did this instead of using tortoiseSVN because I wanted to inject \src\trunk into the path, and having 65 directory trees (containing 100’s of actual projects), anything manual was out of the question.
  9. Run the import script – this just imports the files into Subversion – it does not create a working copy folder!
  10. Get the active projects using tortoiseSVN’s Checkout command.

After that, we changed out CruiseControl.net settings to run against Subversion, and our main project was back up and running.

As for why we are bailing on Team System – simple – we found that we simply do not use many of it’s functions. Instead of it’s work item system (or the Scrum add-in from Conchango), we use Rally. Instead of the MS Build Server, we use CruiseControl.net. We did use the SharePoint integration, but nothing beyond what you’d get with a vanilla SharePoint site. We will miss some of the features of MSTest, but NUnit and TestDriven.net are more than capable replacements.

By changing to Subversion, we can down-grade our MSDN licenses to “Professional”, and save ~$5000 per year. This will allow us to purchase some other productivity tools – CodeSmith, ReSharper, TypeMock, TestDriven.net and Red Ants Profiler to name a few.