April 2, 2012 1 Comment
Well another Dev Summit is in the Books. This conference still remains the best technical show that Esri does, and it gets better every year. I was a bit worried when it started. The plenary was a little bit lighter technically than it usually gets and there was a surprising absence of the Microsoft Office efforts. But the tech sessions came through with high quality material throughout. Mansour brought his game once again, so much so that he got to do an add-on session at the very end; kudos to him for maintaining his energy level to the end. Art Hadaad had a couple of Esri/Microsoft sessions as well, but it didn’t quite feel like it was mainstreamed with the rest of the messaging. Not sure if that was intentional or accidental. Hmmm. I think that Microsoft Office integration is going to really drive a lot of adoption of spatial tools and thinking for folks that otherwise just wouldn’t do it.
The picture is becoming clearer with how the technology stacks are all coming together. The ArcGIS runtime “Core” seems to be the engine going forward for “devices”, with each of the SDKs for those Platforms/Devices leveraging that, and each of the SDKs have, or will have shortly, the built-in components of the API to ArcGIS Online. There were some hints in the plenary that something was up with desktop, but they weren’t saying, until the Closing Session where one fellow asked the question, “what are your plans with desktop?” Credit to him when he didn’t accept the attempt to brush it aside, and we ended up with Scott Morehouse revealing that, yes, they are heading for desktop to be driven by the core code being developed for runtime as well. Looking back to previous conversations and presentations, you could see that this was where we were heading; the ArcObjects libraries were dated and with all of the effort of creating the C++ code for runtime, it just makes sense.
This is going to be a fun year as we all start to implement the new technology stack and struggle through the challenges that we don’t even know about yet. One thing seems certain to me; many of us will be doing our jobs differently in the near future.
As I write out this recap of the last day at the Esri Dev Summit, I’m sitting on a rock on the side of a mountain overlooking Palm Springs. I wanted to get away from the crowd, the perfectly conditioned air, and the cucumber flavored water, to clear my head and think for a bit about all that I’ve experienced in the last 72 hours.
What have I learned in the last few days? I’ve left my family back on the east coast, temporarily ceased work on billable projects, cost the company a decent chuck of change, and for what reason? Was it worth it? I think yes.
Certainly, I’ve gained a lot of practical skills. Just today, I learned how to use the Geodatabase API to get access to data without the need for the entire ArcObjects library. I learned about a tool called X-ray, that can be used to compare a client’s geodatabase against the Local Government Information Model, which will help determine a migration path. I learned that node.js, HTML5 Web Sockets, and ArcGIS Online can be used to create a real time collaborative web application. Finally, I learned that Flex can be used to communicate with a brainwave scanning device and a flying inflatable shark (well, this might not be immediately practical).
But more than this and all the rest of the practical skills and information that I’ve picked up over the past week, I think the “why” which has been communicated is even more valuable. Why do I do the work I do? With what purpose? With what motivation?
Jack Dangermond started off the week by reminding us during the plenary that software has the potential to help alleviate many ills we see in the world around us. Does software in and of itself contain power though? I would suggest no; it is but a tool in the hands of those who create it. At least for the present (and hopefully the future), computers are not sentient beings; the instruction sets which they execute must be programmed by us—the humans. Hang with me, hopefully all my philosophical waxing will tie in nicely at the end.
Certainly we all have reasons for doing what we do; pointers and guideposts in our lives that give us direction and motivate us to press on when the going gets tough. Being out here this afternoon among the rocks, lizards and yellow-flowered bushes has reminded me of my reasons for being. One of which Scott Morehouse expressed quite well during the closing session this afternoon when he said, “We exist to serve you.” Serving others by placing their needs above my own certainly ties in with my personal ethos, and I believe it supports GISi’s core values as well.
So, to conclude, why was it worth the time and expense to come out here to Palm Springs? Because the information I received here will allow me to better serve our clients as they serve their constituents, customers, or citizens. And together, with the assistance of GIS, we can all help make the world a better place.
Building Applications with the Android SDK
Esri is releasing version 1.1 of the SDK next week; it has the following features:
- Support for multiple maps
- Advanced Symbology
- Support for ArcGIS Online Portal and WebMap loading
- Group Layers
- Improved Secure Service
- Support Google’s ADT r17
- (Currently, Emulator is not supported, but it’s Google’s fault not ESRI’s)
The Demo for the Android SDK was really neat. It stored all of the map’s information on an SD card, and was able to edit and store the features to the SD card as JSON strings. They also utilized the Android’s sensor package to rotate the map to magnetic north; as the tablet was rotated, the map was visually pinned to north. But the demo hid one glaring fact; while the SDK supports offline feature editing, it doesn’t yet support the Server Sync (which is why they were serializing data to the SD card). Compared to the iOS SDK, the Android SDK is still playing catch-up.
Another cool feature that the Android SDK supports is Message Processing, which is a method that allows the device to receive a message, and simply call process Message. The message can contain Symbol and Feature information that will then be added to the map, without requiring the application’s code to parse, or attempt to understand the message.
Killer Apps: HTML 5 and Flex
Monsour Raad and Sanjit Thomas gave a great talk about their love for Flex and HTML 5, and how to utilize both to make stunning apps. They demoed 10 applications; here are some highlights:
- Monsour used an HTML5 wrapper to support drag and drop feature onto a Flash application running in the browser.
- Monsour used his mind (concentration/activity) and blinking to control the zoom level of a map.
- Monsour created a real time TSA twitter map that computed the poster’s sentiment, and displayed it on the map.
- Sanjit used a HTML5 map to create a heat map of pedestrian injuries to calculate the odds of injury for any given bike path.
- Sanjit used chromes built-in voice command libraries to control a map.
Developer’s Guide to ArcGIS Online REST API
The ArcGIS Online Rest API tech session was a quick run through of the REST API available to interact with the ArcGIS Online portal. It allows you to authenticate users, perform searches, manage users/groups/communities, and manage items. When users are authenticated, they are given a token to interact with the REST services. Here’s the big “Gotcha”: for scenarios where the app owns the data, the best practice is to have the mobile devices interact with a server, which will interact with the ArcGIS Online server. This will keep the token secret from the application (and the evil user/hacker). Just make sure that the first server isn’t an Amazon cloud instance that references the ArcGIS Online services; otherwise you’ll end up being charged twice for all the data transfers.
Today was the final day of the Dev Summit and it was an experience that certainly didn’t disappoint! Talking with and listening to so many people who share a passion for GIS, development, and technology was extremely impressive. Though it appears that I may not be able to rely solely on my Dodgeball skills to earn me another invitation, I would jump at the chance! And, I should say that my impression of the experience was not solely based on presentations and discussions with the Esri folks and the slew of developers and technical attendees from other organizations, but also from being able to interact with the GISi team over the past three days!
As for the sessions of the last day, in several cases they were deeper dives into topics introduced in previous blog entries and have already been discussed, but I was able to sit in on an Esri and Microsoft Technology Update, which was pretty interesting. Esri Maps for Office looks pretty interesting, making it as easy to create interactive maps from a spreadsheet within Excel as it is to create a chart. The maps can be readily shared (through ArcGIS Online) or inserted into a PowerPoint presentation as a slide. Likewise, there is a map ribbon within PowerPoint that can be used to insert maps directly. The business model for this product is still being evaluated and wasn’t ready for discussion. Additionally, it was made clear that Esri is definitely trying to further align with Microsoft, perhaps especially when it comes to Azure, in order to better play in that space and offer more flexibility on the cloud.
As I mentioned, this has been a great week. There was so much to see and hear that I am certain I will continue to realize just how much is changing as I pour through my notes over the coming days and weeks. There were so many sessions covering such a range of material, it was something of a whirlwind. Nonetheless, there were several consistent and pervasive themes throughout the conference that we should closely watch and actively pursue:
- The cloud, the cloud, the cloud…
- ArcGIS Online
- ArcGIS Server redesign and process streamlining
- Consolidation of ArcGIS Runtime (including into Desktop?!)
I think the 10.1 release is going to be quite significant and exciting and I am looking very much forward to getting my hands on all of the technology I have seen over the past few days!
The second presentation dealt with a custom security solution within the Flex Viewer. Users and roles were stored in SQL Server. Enabling of widgets was controlled by adding a provisioning tag to the widget’s config file that contained the various roles needed. And based upon the login information provided, the widgets would be made available. The presenter pointed out that this approach will be much more streamlined when 10.1 is released, due to the inherent security that will be provided in ArcServer.
The closing session, after covering some alarming statistics regarding the vast consumption of the week, featured a presentation on the ongoing efforts of Esri to support the developer community through resources both electronic and not. The overall theme was defragmenting developer resources while increasing the flexibility of the available tools, to make finding the information you need as simple as possible. Here are some of the areas where these goals are being pursued.
- In the Forums, there are several enhancements to make the user’s experience more valuable. Forum posts can now be voted on, RSS feeds for individual posts can be consumed, and go ahead and try it from your mobile device! There were several other enhancements also, go check it out!
- Training and Certification offerings continue to grow and expand.
- The Esri Blogs include navigation by Community, Author, Category, Tag and Search.
- Esri sponsors Dev Meetups across the map. Find a meetup near you!, or if there isn’t one, then speak up!
Scott Morehouse took the stage to give us a taste of his overarching perspective of the state of the art and what the future holds. And just as the summit opened with a musical metaphor, Morehouse invoked Bob Dylan’s “Gotta Serve Somebody” to remind us all again why we’re here. It’s not for Esri’s sake. In most cases it’s not even for our own sake. And in some, it’s not even for our clients. We’re all here to do what we can to serve our end users. And that’s what makes this event so important. Through the sessions, demonstrations, discussions and networking, we are collectively improving our ability to serve our users.
As for the technical sessions of the day, I found gems in two geodatabase sessions:
Effective Geodatabase Programming
This was a great overview of some of the most common and presumably most useful dos and don’ts of programming against a geodatabase. From how to access data most effectively and efficiently, to where to start looking when things aren’t working as expected, the topics were concise, relevant and in most cases accompanied with clear examples.
I won’t repeat the whole session, but some of the important points for me were:
- Not all cursors are created equal. Some utilize cached results, others do not. Some are bound to the class that created them, others are not. If you’re going to use a cursor, make sure you know which one you need and understand how it behaves.
- Recycling Cursors – These are cool, but be careful; the whole point here is that the cursor only uses one object for the current row. Great for some things, but if you need an object to persist or pass around a particular row, a recycling cursor is probably not the answer.
- Plug In Data Sources – Now this was a cool topic! Basically you can create a plugin to consume any data format you need (okay, maybe not any) in ArcGIS. You develop the plugin (using C#, C++ or VB .Net) and define how data from the source can be translated to feature classes, tables, feature datasets. There’s extensive help documentation on how to accomplish this. Once your plugin is coded, you can read data in ArcGIS, browse, preview, manage in catalog, select, render, query, and more. You can’t write data, but I can live with that. They gave a great walkthrough of how they assigned an unsuspecting developer to create a plugin (which he had not done before) to work with MongoDB (which he had not used before), and he was able to have it fully functional in a week’s time. Great stuff!
At the end of the presentation they gave a rundown of the most common mistakes based on support inquiries. Many of these are covered in the above bullets, but some noteworthy mistakes were:
- Overuse of FindField – It’s recommended to use this method rather than a hardcoded field index, however, if you are using it in a loop to find the same field over and over, you’re asking for performance issues. This was actually a good example of a point that the presenter was repeatedly coming back to: Whenever you can, perform your setup steps before you lock resources and get into the meat of accessing data.
- Calling Store in store_triggered event handler – this is a classic case of infinite recursion.
- And Careless variable reuse – let’s be honest…we’re all offenders here.
Accessing and Administering Your Enterprise Geodatabase through SQL and Python
So this was a double feature. An overview with examples of how much you can do right in SQL with 10.1, followed by an overview with examples of how much you can do with Python at 10.1. I’ll admit that I was a latecomer to this session, so I missed some of the intro SQL stuff, but I did gain a few tidbits that I’ll share.
- Working with your GIS data directly in the DB can be a great thing. Performance and simplicity can be gained from bypassing the ArcGIS stack for certain tasks.
- Working with your GIS data directly in the DB can be risky. After all, you’re bypassing the ArcGIS stack….eek!
- All database items are cataloged in the GDB_items table, with a definition field containing an XML structure defining the object. For instance, in the case of Coded Value Domains, the XML contained the entire CVD definition….values and all. This meant that you could construct a fairly straightforward query to list out all of the Coded Value Domains…pretty neat. Beware though; you can also edit the XML so make sure you understand what you’re doing!
- ArcCatalog provides a new mechanism for creating a spatial view. Simply right click on the database connection, select New->View, and in the dialog shown enter a name for the view and the SQL query text that defines the view.
As far as the Python side of things, here’s a quick look at the capabilities at 10.1:
- Create Geodatabases – that’s right, an alternative to the SDE post-install.
- Create Database Roles
- Create Database Users
- Generate Schemas from XML Workspaces
- Change Privileges
- Manage Versions (Register, create, reconcile, list)
- Disable/Enable DB Connections (doesn’t disconnect current sessions, but does block new ones)
- Disconnect Users (this one does disconnect current sessions)
- Compress Databases
- Rebuild Indexes and Statistics
My most important take-away: With great power comes great responsibility.
Thanks all for a great week!