Thursday, February 08, 2007
Posted on Thursday, February 08, 2007 7:21:55 PM (Mountain Standard Time, UTC-07:00)  Comments [0] | 
Categories: .NET | ArcIMS | ASP.NET
I'm on the road this week, but thought I'd post a quick follow up to my posts on creating configuration section handlers for your .NET applications.

This is a case where you may "know" something, but you do something, which leads to really  "understanding" that thing. In this case, I knew that config handlers are cached - the config file is only read once, and the data (objects etc) that you create in the handler are then cached. This is done for efficiency, and that makes sense.

In a project I was working on I created real business objects from my configuration file. In their role as business objects, they maintained selection sets on particular layers (hence the config file) in an ArcIMS application. And actually stored them in Session.

This all worked fine, and things were progressing until two of us hit the app on the same server at the same time. For some reason, we appeared to be sharing the same selection set. I would select a feature, and it would appear on my map, and and the other users map. This caused a few minutes of head scratching before I clued into it - the objects that were created in the config section handler were cached by ASP.NET, and thus each session was accessing (pointers to) the same instance of the objects - thus the selection set appeared to be shared.

Interesting behavior, if that's what you're after. This was easily solved by whipping up a quick SimpleClone method that I could invoke prior to setting other properties and sending the object into session (I opted not to implement IClonable because I did not want to actually clone the whole object hiearchy - just a simple clone of the configuration data). This solved the issue, and showed that despite "knowing" something, sometimes it's hard to see the implications.

Thus, my suggestion is to only create <myobject>Config classes from Configuration handlers - this will help avoid the tendancy to simply use the classes directly, and possibly stuff them into session where you'll get unexpected results.




Monday, March 20, 2006
Posted on Monday, March 20, 2006 8:03:35 PM (Mountain Daylight Time, UTC-06:00)  Comments [0] | 
Categories: ArcGIS Server | ArcIMS | Devt Tools | ESRI
Made if back from Palm Springs just in time for a big old Front Range snow storm. Right now its dumping in Fort Collins. Other bloggers have already posted great information from the second day, so I'll not re-hash that - just link over there - James Fee, Rob Elkin, Cory Eicher.

My Additions:

First - a big kudos goes out to Brian Goldin and everyone else at ESRI who made this conference possible. In 10 years of attending conferences, this was by far the most useful conference.

Next - What can you say about the .NET ADF! Big big props to Art Haddad and his team for making all our lives easier (when it's released). We're already scheming up projects where we can use the ADF. Who says ESRI is not raising the bar? For those not in the beta program, and who did not attend, just wait! Web mapping elements are no-longer second class citizens grafted into otherwise industry standard web-sites. Expect seamless integration of mapping into any .NET 2.0 web site when this rolls out.

Ideas for next time:

Software Enginnering Practices
As someone noted in the closing session -  some sessions where ESRI talks about their best practices re: software engineering process. Many GIS developers do not come from a Computer Science background, and may not work in shops where source control is taken for granted, and having good unit tests is as important as having good code.

Real-World Applications
Sessions which show real-world applications - co-presented by ESRI and the developers would be very cool. This would inject the dirty reality in which all problems can not be solved at the coarse-grained level.

Fine-Grained Love
And - as echoed by many attendees - we love our fine-grained objects. So sessions on that would also be great. Just to kick a topic out there - "Best Practices for working with IGeometry". This would be particularly good because there are so many ways to interact with the low-level geometry objects, and some are much faster than others (geometry bags vs iterating over a collection). Add into that the "zen" of dealing with precision differences between the map frame and a feature class, and how that effects operations, and you'd have a weighty 75 minutes of fine-grained love.

Back to reality and some non-ADF ArcGIS Server work.

Friday, March 17, 2006
Posted on Friday, March 17, 2006 8:07:11 PM (Mountain Daylight Time, UTC-06:00)  Comments [0] | 
Categories: .NET | ArcGIS Devt | ArcGIS Server | ArcIMS | ArcSDE | ESRI

So the DevSummit is packed. Really packed. Every session I went to was standing room only. I must say that it's very cool to see that there are this many people who are doing development work with ArcGIS.
Everything has been really good for a "version 1" event. Kudos to Brian Goldin and everyone at ESRI for making this event happen.

There were only two "odd" things:

1) "Use Coarse Grained Objects" Mantra
This was consistent in almost every talk I attended - "look how much less code you'll write if you use a geoprocessing task instead of all that pesky ArcObjects code". I find this odd, because this is a "developer" conference, and I'd assume that most people are here to hear about using those pesky ArcObjects. Additionally, while I see how that can be useful for prototyping or quick one-off stuff,  but how can it be more performant than using the finer-grained classes? And the case for why I would add a geoprocessing model into an otherwise all .NET application was never really made - beyond "less code".

I could see a use case where a non-developer GIS Analyst needed to be able to modify aspects of the model without requiring recompiling the code, but I don't see that as the most common use case for this audience (maybe at the User Conference...). And as a developer, I explicily do not want the success / failure of my code to rely on something that a user COULD edit.  Maybe we could compile the model into an assembly as an embedded resource, thus avoiding the problem? Anyhow - I don't mean to rant about this, but it did seem odd. Maybe today will be the "fine grained objects rock!" day.

2) "Look what you can do at nine-point-two"
I had expected more discussion of released software. I think the description of the event even states that, and certainly Scott mentioned this in his keynote on Friday. But the demos were a lot of click-drag-neato-presto 9.2 Visual Studio integration & AFD stuff. While this is very, very, very cool (I wish we could blog about the beta), the release is not next week, so it was not exactly pertinent to what a developer will be doing on Monday morning. I did hear that there was a geoprocessing session which was very 9.1 focused, so maybe I just happened to be in the 9.2 sessions.

Overall, this is a great event, with lots of great information and awesome interaction with ESRI staff. If you did not make it here this year, start planning for next!

Thursday, December 15, 2005
Posted on Thursday, December 15, 2005 1:32:27 PM (Mountain Standard Time, UTC-07:00)  Comments [0] | 
Categories: ArcGIS Devt | .NET | ArcGIS Server | ArcIMS | ArcSDE | ESRI
It seems that some people have already located it, but I'll make this the "formal" announcement of the ArcDeveloper blog. This will be a group blog (more authors = more posts!), dedicated to Arc Developement topics. I think it's worth noting that although we all work together, this blog is not affiliated with our employer in any way - so while we have "added vitamin C", it will be "marketing free".

We'll be posting introductions, and some "real" content shortly. As for this blog, I'll keep posting on general .NET, GIS solution architecture, and other less developer centric topics.

See you over on ArcDeveloper!
Tuesday, November 29, 2005
Posted on Tuesday, November 29, 2005 10:41:07 AM (Mountain Standard Time, UTC-07:00)  Comments [0] | 
Categories: .NET | ArcIMS | DNN | ESRI | General
We're looking for a motivated person to join our cutting edge geospatial development team. Located in Fort Collins, this tight knit team is focused on building cutting edge GIS application using both ESRI and OGC technologies. This position is focused on web development using ASP.NET and AJAX, to build dynamic geospatial portals. We have a number of on-going large scale projects which require these skills, and we'd love to have you join our team.

Must Have Skills:
  • ASP.NET (C# or VB.NET)
  • Cross-browser Javascript +Ajax essential

Other skills:

  • Experience with Ajax.NET
  • Background/Experience/Interest in GIS, and/or spatial technologies
  • Good design skills (Photoshop + CSS)
  • Experience with DotNetNuke
  • Experience with ArcIMS / OGC WMS
  • Database skills (MS SQL, Stored procs etc)
Some sites you'll be working on...
Kentucky Landscape Census
Built on DotNetNuke 3.x, and utilizes a distributed set of OGC compliant map servers to generate maps. The mapping module utilizes Ajax.NET, along with some open-source vector drawing libraries. Further work will extend this mapping module to use the OGC WFS and Catalog services. Add-on contracts will extend the functionality of the framework to include land cover change detection.

City of Emeryville Redevelopment Site
Buit on DotNetNuke 2.x, this site is bringing together the power of ArcIMS, and a Real Estate listing system to provide the user with an integrated toolset to locate properties for re-development. The map module utilizes Ajax.NET to retreive maps and data from ArcIMS. Further work will include integration of spatial queries into the real estate module, and enhanced query tools.

In addition to these two on-going projects, Sanborn has a number of other enterprise GIS clients, for whom we will be building large scale systems integrating ArcGIS Desktop, ArcGIS Server and ArcIMS. So, if you're interested in an exciting change from the same old same old, send your resume to employment@sanborn.com. The official job posting is on the main Sanborn Site.
Tuesday, July 19, 2005
Posted on Tuesday, July 19, 2005 2:02:17 PM (Mountain Daylight Time, UTC-06:00)  Comments [0] | 
Categories: ArcIMS
Ryan Olson has posted about ESRI releasing a survey for users of the ArcIMS HTML client.
While I have not used this much in the past, I do have some ideas for the future, Ryan does note that this is a chance to influence a re-design of the HTML client. And I do have some ideas for that...

First off, lets all agree that the current HTML client is a javascript nightmare. No slight to the folks who wrote it, or people who've made it do some very cool things, but really, it needs some serious updating.
So, here are my suggestions for the new version...

  1. This should be obvious - use AJAX. Google has set the bar for interaction, and now we all have to go there. ESRI included.
  2. Use Javascript objects. This is one of the nicest things about the Google Maps API - happy little objects all over the place. It also makes it easy to fold into other apps - which is one of the biggest issues with the current ArcIMS HTML client.
  3. Use javascript "tool classes" to add functionality to the system. Brian Flood has a breif example on his post about extending Google Maps
  4. This may be reaching, but if ESRI could integrate an option for a "tiling" service which could leverage the CivicMaps open source Google-like panning/zooming. The page at civicactions.net describes how to do this with MapServer, so maybe ESRI should look at this too (or leave something on the table for us consultants to build :-) )