Python Shorts: The Benefits of Unit Testing

In the realm of programming, “unit testing” is an automated way of testing small, individual “units” of your code to ensure that when given a specific set of...


Python Shorts: Flattening Arrow Code

“Arrow Code” refers to a series of nested if statements that increase your indentation level at each statement, creating an arrow of whitespace when the ifs ...


Introducing the Official UGRC API Client

Assigning a geographic coordinate to an address, otherwise known as geocoding, is one of the simplest ways to enable data to be visualized on a map. This mak...


SGID Product Relaunch Update

In a June 2019 post “SGID Then and Now,” we touched on where we thought the SGID is going. Based on the survey responses from that article, we have changed d...


Using Jupyter Notebook for UGRC Collaboration

At UGRC we greatly value collaboration and sharing ideas. A terrific technology to support these values is the Jupyter Notebook project.


Thoughts from Teaching Google and Amazon New Skills

Developing software for digital assistants is fun and a refreshing change from typical GIS projects. Over the past few months, UGRC was lucky enough to spend...


Make Old Dojo Builds More Beautiful With UglifyJS

Do you have an old project that uses the Dojo Build System (DBS) that has suddenly refused to build? I’ve come across this issue recently and it can be frust...


Best Practices for Building Web AppBuilder Widgets

Recently, I have been working on a project building custom Web AppBuilder (WAB) widgets for a client. This has been an interesting digression from our typica...


Image Service Deprecation

The UGRC brownout of the mapserv image services on mapserv.utah.gov from January 5 through 10, 2019, in preparation for the ArcGIS Server upgrade was very su...


ArcGIS Server 10.6 Upgrade

UGRC is planning to upgrade the mapserv ArcGIS Server system to version 10.6.1 within the next few weeks. For the majority of our users, we do not expect any...


The Next UGRC WebAPI

The current WebAPI has been in production serving the public for multiple years. It handles millions of requests for spatial information every month and is f...


Leveraging Git and GitHub to Manage the Lifecycle of Custom ArcGIS Tools

As GIS developers, we are often expected to provide the same custom tool for multiple versions of ArcGIS Desktop (or ArcGIS Pro). For example, some users are...


Implementing Babel via Grunt

Have you ever felt your excitement build after seeing some cool, new JavaScript feature only to find out that it isn’t supported in all of the browsers that ...


Don't Make Users Think about Updating Software

As software developers, we want the people who are using our software to enjoy not hate the experience. Developers strive to create a positive user experienc...


Cache-Breaking for Faster Web Application Updates

When Production Is Broken, It Needs to Be Fixed Now! Recently, the URL changed for one of the map services we use in several of our applications. This came a...


Success with Serverless

In this post, I’d like to share the success story of our recent testing of serverless computing. We’ve been having some issues with a print-proxy service, an...


Dumbing Down Terrain with Contour Polygons

While technology advances towards products with greater resolution and accuracy, sometimes more data isn’t always better data. Sometimes, being able to see g...


The Evolution of a Python Script

Python is a very approachable programming language and scripting in python is quick and powerful - Create a file, type some code, and a repeatable script is ...


FOSS4G 2017

The 2017 International FOSS4G Conference (Free and Open Source Software for Geospatial) took place in Boston, MA with a record attendance of around 1500 atte...


UGRC System Status Page

Over the years, GIS is trending more and more towards being web-based. UGRC has tried to keep step with this trend with the addition of the discover, the Tur...


Converting SGID data downloads to Drive

File-based data products in remain an important component of Utah’s State Geographic Information Database (SGID). In a change designed not to be noticed by u...


Rethinking Geocoders: Adding Local Vernacular into the Build Process

UGRC has been working on a project to enhance our approach to geocoding. This grew from the basic idea that humans often view addressing differently than a G...


devsummit 2017

The ESRI Dev Summit this year was great, as always. We much prefer this smaller more intimate conference to the much larger User Conference. They pack the sc...


Removing and Replacing the Esri Web Adaptor

The Esri web adaptor is a small load balancer/reverse proxy bundled into the ArcGIS Server install but do you know if you need it?


Printing Web Maps with Discover Services

Export Web Map Tool


Forced GitHub; A reflection on a new website using GitHub and Jekyll

The first commit to our version 6 website was one year and eight months ago on May 26, 2015. We went live with the v6.0 on March 25, 2016. Between that first...


Why I Speak at Conferences and You Should Too

Recently, I tried to gather all of the presentations that I have participated in during my career up to this point (~10 years). I was able to find materials ...


Converting Dojo-AMD Projects To TypeScript

At some point in every TypeScript introduction that I have been to, the presenter says something to the effect of:


Using UGRC's new Web Mercator Services in Your Web Maps

The instructions on this page are dated. Using Discover services with the Esri JavaScript API v4.x contains more current information.


Mock your Dojo AMD modules with StubModule.js

When testing AMD modules it is sometimes necessary to verify how it interacts with it's dependencies. For example, you might be writing a module that makes X...


Boost Your Productivity With Vim

I was surprised to realize today that I have never written about one of my favorite tools that I use to write code. It's something that absolutely transf...


Staying in the Zone with AMD Butler

[Update(3/17/16): This plugin has been ported to an Atom Editor package called amdbutler.] A few months ago, I built a simple plugin for Sublime Text 3 ...


Windows Scheduler: Get Your Priorities Straight

Here at UGRC we have a variety of tasks (usually python scripts) that need to be run on a schedule. These are usually workflows that scrape and ETL data for ...


How To Use UGRC Base Maps in QGIS

Most people know about UGRC’s awesome base maps. They are very popular and provide high quality cartography using the latest and greatest data from the Utah ...


Basemaps: A 2014 Day in the Life

A day in the life of Utah’s ArcGIS Server Basemaps 2014


How to Wire up Travis-CI to your JS Projects

For the past six months, UGRC has been using Travis CI to automatically test and lint our projects each time we push a commit to the associated GitHub reposi...


Using UGRC's Geocoding and Map-based Web Services

The Department of Technology Services hosts a monthly scheduled Enterprise Developer Group (EDG) brown bag presentation series. The previous session recordin...


grunt-esri-slurp

[Update(3/17/16): ESRI has released a bower package for the JS API that removes the need for this project.] Running the Dojo Build System with ESRI's JavaScr...


My Favorite Sublime Text 3 Plugins & Configs

I'm a huge fan of Sublime Text 3. I love it's simplicity and strong package community. Here's a list of my favorite packages and config tweaks: Packages Pac...


Quick JavaScript Tip: The Arguments Object

Recently, as I was slowly working my way through Rebecca Murphy's excellent js-assessment test suite, I ran into a problem that was quite vexing. I was creat...


Using Base Maps with Non-standard Coordinate Systems in LeafletJS

Since LeafletJS seems to be what all of the cool kids are using these days and it shows no signs of slowing down, I thought that it would be fun to figure ou...


Mac OSX + VMware Fusion + ESRI's ArcGIS Server

While there's endless arguments about whether Mac's or PC's are better for web development, there's not much argument that Mac OSX is the most popular platfo...


The ESRI API for JavaScript/Dojo Build System Saga Continues...

That's right, my entire app JS is in this one file *including @ESRI modules* https://t.co/06S4KCtkuR cc @DavidSpriggs @derekswingley — Scott Davis (@SThomas...


New Address Point Cached Map Service

UGRC recently released an address point map service. The service contains a cached version of  Utah’s Statewide Address Points dataset. Direction...


UGRC Web Mapping Services Demo

UGRC offers a variety of mapping-related web services that make it easy to add authoritative Utah web maps to your applications. The two most popular are our...


New Release of atlas.utah.gov

UGRC recently released a new version of atlas.utah.gov, a map viewer that allows users to inspect the statewide base map services that highlight terrain, lan...


ESRI JSAPI 3.4 and the Dojo Build System

In a previous post, I outlined how I use the Dojo Build System to optimize my web app code for production. Specifically I showed how I get around the problem...


Tracking Server Response Times with the Google Spreadsheets API and asp.net

We've been noticing some speed issues with our mapserv machines recently and are trying to figure out the issue. In an effort to have a little insight into t...


Using The Dojo Build System To Speed Up Your ESRI JavaScript API Apps

As your JavaScript projects get more and more complex, loading all of your Dojo javascript files can really slow down your load time. All those dojo.require ...