GIS: From ActiveX and ColdFusion to Node.js

When ArcIMS 3.0 arrived, it was literally the best day of my life (well from a GIS programming perspective). After hacking ArcView IMS 1.0 and then some crazy VB5/VB6 stuff with MapObjects IMS 2.0 (esrimap.dll is the work of the devil) there was finally something that was able to be truly a web server GIS development environment. With excitement I pulled myself into the Esri UC session for ArcIMS 3.0 and then sat down with pen and paper (this was before WiFi). I looked around and noticed that there was not many people in the room for the ActiveX session. But across the hall the ColdFusion session was packed and out the door). Now the less said about ArcIMS 3.0 the better but it was the start of real programming on Esri Server products.

ColdFusion hung around for a while but the ActiveX stuff was quickly replaced with the WebADF. Now there is much on this blog about the WebADF and I don’t think I need to go back over it but while it was a complete mess, it did allow us to develop with .NET and actually create some amazing applications. Eventually the REST API replaced much of what we were doing with the WebADF Framework and we were free from all the limitations of that AJAX madness. I think the key with Esri Server development is the REST API. This is what freed us from siloed frameworks and allowed us to move into other languages such as Ruby/Rails.

Now during the Ruby/Rails period, I was working for WeoGeo so my focus was on that stack, not the Esri one. I do recall Dave Bouwman showing Ruby/Rails stuff at the DevSummit but it never took off as an Esri development language. There isn’t anything inherently wrong with it, it just was never supported as well on Windows as other options so by the time Windows support was good enough to be used, we all moved on to Node.js.

Now Node.js is probably the biggest impact on what we do with Esri Server since .NET. The best part though is development is basically cross platform so I can be on my MacBook Pro and my other Devs can roll on Ubuntu or Windows. Again, because of the REST API. If you go to the Esri Github repository or look on npm you’ll see lots of JavaScript and Node.js projects just ready for the taking.  It’s a far cry from the days of trying to register some stupid ActiveX control in VisualStudio (heck I still have nightmares about Visual InterDev).  Now I won’t sugarcoat npm because when it works it’s great, when it doesn’t it sucks.  But generally I can type a couple words and have a new Node.js application installed in my project.

As I’m getting back into ArcGIS for Server 10.3 and ArcGIS Online I’ve come to reflect on the crazy path we’ve taken from Avenue -> VB5 -> ActiveX -> .NET -> Ruby/Rails -> Node.js and on to whatever is next.  Not only that, during this whole time there were those Java guys (it was like 3-5 of them) in the corner trying to just get ArcGIS for Server Java installed.  But hey, they got free copies of MapObjects Java Edition.

Extensions for ArcGIS for Server

One of the more confusing things for new ArcGIS users is that they probably need either Spatial Analyst or 3D Analyst to do their work.  It’s almost a foregone conclusion that every ArcGIS for Desktop license will have at some point either one of those extensions.  As I’m getting back into Server though I’m starting to take a look at those extensions as well.  Specifically the GeoEvent Extension has caught my eye.  Conversations on Twitter basically expose that it either works or it doesn’t and it’s either great or maddening.  Sounds like typical Esri software.

The thing about Server extensions though is they mostly have a Windows requirement to run (thankfully GeoEvent doesn’t).  As I’ve jumped back into ArcGIS for Server I’ve been impressed with it’s maturity but alas it’s still a windows only product which limits its use in hosted environments.  I’m not oblivious to the reasons why these things go Windows only but it is a shame that Workflow and Data Reviewer require windows.  Hopefully as Esri transitions into a more software agnostic development environment, they’ll start fixing these Windows only requirements.

At least GeoEvent Extension runs on Linux, wish me luck with that….

Editor Choices

I’ve been a BBEdit user since probably 1994 (that’s the oldest floppy disk I can find) and I’ve loved it.  Back when I worked at WeoGeo though, I flirted with TextMate as did many others who worked with Ruby.  But that project imploded with the 2.0 beta so I moved back to BBEdit with MacVim running when I needed command line editing.  I’ve dabbled in Sublime Text but I just never cared for it so I stuck with BBEdit.

With my new job though I’m knee deep in Node.js and Express.js and BBEdit just isn’t working for me so I’m looking at a new editor.  My choices as I see them right now are:

I’ve used Atom on and off since GitHub had their beta but I stuck with BBEdit for what I’m guess are “historic reasons”.  Atom, being born out of GitHub is modern and has what appears to be a robust community behind it with packages and themes.

Brackets is intriguing but I just can’t get my head behind using an Adobe product (even if it is open source).  I feel like Adobe PageMill might just suddenly appear on my desktop.  The biggest +/- of Brackets is that it is designed for web design.  It doesn’t concern itself with Objective C or Swift coding.  It’s focused on web technology which simplifies it a bit but limits my use of it.  I like the idea of just using one editor and staying with it.

Now Microsoft Studio Code is very good.  I’ve really liked using it and it too has a robust community developing extensions.  Plus it is built on Electron which is the underpinnings of Atom.

I’m torn between using Microsoft Studio Code and Atom.  I’ve been locked on Atom the past week and while I do like what Microsoft has done with Code, I think I’m going to be staying on Atom moving forward.  The best part of JavaScript development though is you really don’t need to standardize on any editor.  Just let Git control the project and edit in TextEdit.

Using the Esri ArcGIS Server Cloud Builder

I’ve been playing with ArcGIS for Server 10.3.1 at Matrix and we’re all about running things with hosted services.  So rather than spec out some hardware and install ArcGIS for Server on local legacy machines, we’re doing it all in the cloud.  Because I’m new here there wasn’t any legacy AWS use so I was able to pick Azure for deployment.  My logic:

  • While I’m experienced with AWS, Azure is mostly an unknown world to me.  Given we’re running Windows servers with SQL Server, why not go native.
  • I really want to give SQL Azure a spin.
  • The portal for Azure is much nicer than AWS.  They have those stupid panels in places[footnote]is that what they’re called?[/footnote] but mostly it makes logical sense.
  • Esri has Cloud Builder to simplify installation which I though would be great for starting up prototypes quickly.

So logical, no?  Well late yesterday this tweet went out by me.

I was stuck here:

CloudBuilder_Fail

You can literally hear the sad trombone sound.  Now Sam Libby was helping troubleshoot but things were still a bit weird.  Basically as you can see in the error above, I needed to accept an EULA.  Now of course I went into the the Azure Marketplace and followed the instructions to allow the Esri VM to be deployed programmatically which is what Cloud Builder requires.  But each time it errored out the same way.

Sam offered this:

Basically he hit upon it.  Microsoft did something with the marketplace and for whatever reason the Cloud Builder app won’t install an Esri ArcGIS for Server VM until you actually install it first yourself.

The workaround to get the Cloud Builder app to run is actually just create a VM using the Azure Portal then delete it.

create_vm

After that, the Esri Cloud Builder app runs perfectly without trouble.

cloudbuilder

Philip Heede basically confirms everything.

So the ArcGIS for Server Cloud Builder[footnote]seriously, why no “for” in the title, consistency folks![/footnote] works great.  While I don’t like wizards in general, it automates the processes that take time and let’s you focus on the settings for ArcGIS for Server you want to change.  I honestly haven’t installed ArcGIS for Server since it was ArcGIS Server (without the for) 9.3.1 and it was interesting to see how things have changed and how little has actually changed.