GeoGeekTV: Today @ 4:00pm

Posted by Dave Bouwman | Posted in GeoGeekTV | Posted on 29-05-2009

0

Just a quick note that we’ll be doing another edition of GeoGeekTV today at 4:00pm Mountain. We’ll be talking about "Bing Enterprise Geo-webby mashup silliness" as well as Flex, Silverlight, the beer of the week, and anything else that comes up in the chat. Drop by UStream http://www.ustream.tv/channel/GeoGeekTV  or just click on the graphic below.

geogeektv-white

When User Interfaces Fail: Expedia.com

Posted by Dave Bouwman | Posted in Life, Usability | Posted on 26-05-2009

0

While doing some hotel booking during my recent vacation I came across some usability issues which I thought I’d share with everyone as an example of an anti-pattern in interface design.

For this trip we booked a vacation home in La Jolla California using Vacation Rental By Owner (VRBO.com) but we needed a hotel room for the last night before flying out. Enter Expedia.com

My search was pretty simple, a hotel room for 2 adults and 1 child for one night in San Diego. After grinding away for a few seconds, I got back 16 pages of listings. I think “Great – we should have lots to choose from!”… until I started to scroll down the list…

image

Awesome. On the first page of results there were only 5 listings that did not have the handy little note: This Hotel Cannot Be Booked: Exceeds Max Guests”. So just why the hell am I seeing a listing for a hotel that I can’t book into? And what does “Exceeds Max Guests” mean? Maybe it means it’s fully booked? Nope…

image

It seems that the “Exceeds Max Guests” is related to the number of beds. So Expedia’s search is smart enough to know that I need more than one bed, but their result viewer is designed to waste their customers time by showing a list of hotels which don’t have appropriate accomodations. As if this was not bad enough, for two of the places they listed as “available”, I went through the whole order process only to get a message at the end of the process that the hotel in question did not actually have any rooms. By this time I was fuming, but also not interested in messing around any more, so I called Expedia

Miraculously they were able to find hotels with availability for 2 adults and one child in seconds. What this tells me is that internally, the Expedia reps have a better, more streamlined interface that does not waste their time, which makes sense because Expedia actually pays for the time of their internal people. However, Expedia feels that they can/should waste their customer’s time with ineffective interfaces which return irrelevant results.

I’ve used Expedia for the last 5 years, and this is the last interaction I will have with them. I’m very fond of this quote from Scott Karp – “In the age of Google design has no margin of error, and there are no stupid users, only inadequate designs”. Bye Bye Expedia – I’ll be back when you stop wasting my time.

And another note on the hotel room they finally did book for me – I specifically requested a non-smoking room, which the Expedia rep (“Lance”) ensured me it would be. Of course, when we get to the hotel, it’s a smoking room, that reeks. Since the hotel was 100% full, we had no option to change rooms. From talking with the very apologetic hotel manager, apparently this kind of bullshit is pretty common when dealing with Expedia.

As I sat in the lobby writing up this post, another person came in with a confirmation from Expedia for the hotel, but the hotel had no record of it, nor a room. I did not find out how that worked out as I had to fetch my wife and son from the pool, but apparently Expedia is working really hard to piss off their customers. Perhaps the age of the “travel agent” is not over, as I’d gladly pay a 5 or 10% fee to someone who could actually ensure that I’d get what I wanted and I would not have to fight with some “customer dis-service” representative simply does not care.

Simple ASP.NET 301 Moved Permanently Redirector

Posted by Dave Bouwman | Posted in ASP.NET, Blogging | Posted on 25-05-2009

0

I’ve been running DasBlog since I started blogging back in February 2005, and it had been good, but the time came to move on to something that required less hand-on work to keep current. Enter WordPress. You can read how the content migration went in a previoud post, but this is just about the final step in the process – setting up a redirector. 

Armed with my csv file listing the old dasblog based urls and the new wordpress urls, I needed to build a simple ASP.NET app I could drop in the old location, and have it spit back “301 Permanently Moved” responses when someone (or Google) hits the old Urls. It’s important to let Google know that your pages have moved, thus we send a 301 server response, which tells the search engine to never come back to that original location.

I should note that I can do this because my blog’s address changed – from blog.davebouwman.net to blog.davebouwman.com – thus I still had the old location available to run a .NET application, which could do the re-direct. If you are paving over a .NET blog with WordPress, and hosting it on the same Url, you’ll have to find a different option.

What I came up with was a simple Global.asax that seems to work pretty well. Not sure how it would scale if I had 10,000 posts, but at 390, it’s just fine – besides it was the only part of this project that went as predicted. The code below is everything – I do have a simple empty Default.aspx page, and of course the linkmap.csv file, but that’s it. You can try it by following this link:

http://blog.davebouwman.net/2009/01/06/CodeCoverageWhatsEnough.aspx 

 
<%@ Application Language="C#" %>
<%@ Import Namespace="System.IO" %>

<script runat="server">

    void Application_Start(object sender, EventArgs e)
    {
        //Load the CSV list into a hashtable and cache it
        LoadUrlsIntoCache();
    }

    private void LoadUrlsIntoCache()
    {
        Hashtable urls = new Hashtable();
        FileStream fs = File.OpenRead(Server.MapPath("./linkmap.csv"));
        using (StreamReader sr = new StreamReader(fs))
        {
            while (sr.Peek() >= 0)
            {
                string line = sr.ReadLine();
                if(line.Contains(","))
                {
                string[] parts = line.Split(',');
                urls.Add(parts[0], parts[1]);
                }
            }
        }
        Context.Cache.Add("UrlCache",
                            urls,
                            null,
                            System.Web.Caching.Cache.NoAbsoluteExpiration,
                            new TimeSpan(0, 0, 20, 0, 0),
                            CacheItemPriority.High,
                            null);
    }

    protected void Application_BeginRequest(Object sender, EventArgs e)
    {
        string requestPath = HttpContext.Current.Request.Url.ToString();
        Hashtable urls = (Hashtable)Context.Cache.Get("UrlCache");
        if (urls == null)
        {
            LoadUrlsIntoCache();
            urls = (Hashtable)Context.Cache.Get("UrlCache");
        }

        string newUrl = "";
        if (urls.ContainsKey(requestPath))
        {
            newUrl = (string)urls[requestPath];
        }
        else
        {
            //Requested Url not in cache... send to "missing content" page...
            newUrl = "http://blog.davebouwman.com/index.php/content-missing/?foo=" +requestPath;
        }

        Response.Clear();
        Response.Status = "301 Moved Permanently";
        Response.AddHeader("Location", newUrl);
        Response.End();
    }

</script>

Speaking @ GIS Colorado Friday May 15th

Posted by Dave Bouwman | Posted in ArcSDE, Uncategorized | Posted on 15-05-2009

0

Apparently there was a configuration issue with FeedBurner, and this was not aggregated – thus the repost.


This Friday, May 15th, I’ll be giving a talk titled “Building Great Apps for Your Maps” at the GIS Colorado (GISCO) Spring Quarterly Meeting.

Building-Great-Apps-For-Your-Maps

The meeting will be at the Boulder County Administration Building, 1325 Pearl Street, Boulder, CO 80302. The meeting will start at 8:00 am with coffee, juice, and breakfast-y fare. Please be prompt to get some food and hear about GISCO goings-on and a GIS “state-of-the-state” from Colorado State GIS Coordinator Jon Gottsegen. Again, you do NOT have to be a GISCO member to attend  and there is NO COST for the meeting. Here’s the latest agenda that I’ve received – I’ll be talking at 1:00pm – hope to see you there!

8:00-8:30am

Registration – Coffee, juice, donuts, etc.

8:30-8:45am

Welcome, greeting, business announcements – Frank Orr - GISCO

8:45-9:15am

Update on State Activities – Jon Gottsegen - Jon.Gottsegen@state.co.us

9:15-9:45am

Using a GIS to manage Agricultural Water Resources at Boulder County Parks and Open Space

Kristina VanDenBosch,– kvandenbosch@bouldercounty.org

Summary: The Boulder County Parks and Open Space program began in 1975 as a single property. Since that first acquisition in 1975 the Parks and Open Space program has grown to more than 97,000 acres, including directly owned properties and conservation easements held over private property. In addition to the land, BCPOS has a large water portfolio. These water resources, used predominantly for agricultural production, have a value in excess of an additional $60 million. Making decisions about the management of these water resources for agricultural production requires a thorough understanding of complex information, including climatic conditions, natural and artificial water systems, agricultural practices, and legal conditions. Learn how Boulder County Parks and Open Space has designed and implemented an integrated GIS, based on the existing technology structure, to effectively manage these water resources.

9:45-10:15am

Automatically Assigning User-Defined Unique IDs in ArcSDE

Dave MurryDMurray@CityofWestminster.us

Summary: The automatic assignment of unique IDs in a GIS environment is described in this presentation. The process uses a versioned ArcSDE database environment and Microsoft SQL Server script to assign a unique ID to each new record. The key to the successful automated assignment of unique IDs in a versioned environment is making sure the database is compressed and that no edits are outstanding. This requires the automation of the SDE version process and the editors adhering to these versions. The business process allows for the ID assignment to be one day out of sequence. Some organizations require immediate propagation of IDs and this method would not work for them. Also, environments that do not version their datasets would not necessarily need to use this process but they could take advantage of the automated steps described here. The presentation will review various alternatives explored when developing this method. Future enhancements as well as possibilities for different approaches will be discussed.

10:15-10:30am

Break

10:30-11:00am

On-Demand Spatial Solutions

Frank Orr - Frank.Orr@CH2M.com

Summary: CH2M HILL’s ODSS Small Government Edition is a managed enterprise GIS for government organizations without the time or specialized resources to build and maintain a comprehensive, scalable GIS. CH2M HILL can provide the specialty servers, software, and support so that your staff spend more time focused on your core mission and less time figuring out how to access and support the GIS. ODSS provides a number of advantages compared to other enterprise GIS implementation approaches:

· Lower up-front capital and overall operating costs

· Predictable, subscription-based pricing

· Rapid deployment of industry leading GIS technology and data sources

· GIS accessible by all staff using only a browser—no need for specialty software!

· Guaranteed service levels and scalability

11:00-11:30am

DRCOG Data Catalog

Jonathan Harahush - JHarahush@drcog.org

Sara Eberhardt - SEberhardt@drcog.org

Summary: The Denver Regional Council of Governments (DRCOG) had a business need to develop and maintain a regional data catalog comprised of up-to-date regional data and its associated metadata. The DRCOG Geospatial Team did not have significant budget for additional commercial software or vendor support to build and deploy this Web-based application so we leveraged our collective knowledge and experience and built a framework consisting of Free and Open Source Software (FOSS) in our existing IT environment. The basis for developing this application was to create an open data framework to share regional land use and transportation planning data with DRCOG member governments, internal staff, partner agencies and the public through a searchable web interface. We’ll highlight the project focusing on the open source solutions involved such as PostgreSQL with PostGIS, Geoserver and OpenLayers to name a few. We will also discuss the project’s success and challenges and what the future holds for future FOSS projects at DRCO.

11:30-12:00 noon

Best Practices for Mobile GIS Technology Integration

Glenn Vlass - glenn@cartopac.com

Summary: Today, many local and state governments are deploying mobile solutions, many of which have workforces in the field with more than a hundred users. Determining requirements, defining data work flow and understanding how data is to be moved between the office and the field are all essential steps in order to be successful. This presentation will help you understand key issues and determine how to plan for a mobile implementation and integrate it into an existing GIS. Already have a mobile application in the field? Learn best practices, improve your efficiency and increase your ROI. Learning objectives include:

· Discuss the essential requirements to successfully deploy mobile applications within your workforce.

· Learn the value of defining a data work flow for your mobile application before deployment of your mobile workforce.

· Understand the challenges faced by many Municipalities when deploying mobile applications.

1:00-2:00pm

Building Great Apps for Your Maps

Dave Bouwman - dbouwman@dtsagile.com

Brian Noylebnoyle@dtsagile.com

Summary: The GIS community is faced with a number of challenges and opportunities today when developing applications for the GeoWeb. In this session, speaker Dave Bouwman (http://blog.davebouwman.com) will discuss what to consider when developing GeoWeb applications. Real-world examples will be used to illustrate and explain development concepts relating to using an agile development process, selecting map canvases, interface design, back-end service design, and unit testing. Some of the technologies covered will include ASP.NET model view controller (MVC), MbUnit, esri.map, and OpenLayers.

2:00-2:30pm

Getting The Lay of the Land: Free and (mostly) Easy Mapping of Land Resources With The Help Of Government Web Services

Brian Timoney - brian@thetimoneygroup.com

Summary: Be a hero to your clients and co-workers by quickly whipping up comprehensive snapshots of land use in the west by tapping the WMS services offered by the USGS and BLM. More than simply topos and land grid, with these services you can stream federal land ownership, oil & gas leases, coal & geothermal, etc. Imagine: no shapefile downloads, no stacks of DVDs on your desk. Even better, your users won’t need fancy software to view your handiwork: we’ll show you how stream this info into Google Earth as well as create your own browser-based map using Open Layers. By showing the utility and flexibility of streaming open-standards web services, we’ll highlight the difference between public entities making their data accessible and merely making it available (e.g. shapefile download via FTP–hello 1999!).

2:30 – 3:00

The GIS in Higher Education Summit

Jamie Fuller - j.d.full@gmail.com

Summary: On Friday, April 24, 2009, professors and instructors from across the state gathered at Colorado State University in Fort Collins to discuss the role of higher education in geospatial technologies. The GIS in Higher Education Summit attracted representatives from over 15 colleges and universities and facilitated discussion on topics including: strategies for coordinating geospatial programs and certificates offered across the state; articulation between community colleges and universities; possibilities for sharing resources across campuses—curricula, data, teaching methods; efforts to establish standards for certificates, minors, majors, and other degrees; and what is expected from GIS students once they are out in the workforce. The Summit marked a starting point for collaboration among academic institutions teaching GIS and related subjects. A centralized website and a listserv are initial items to establish; coordination with both GIS Colorado and the state GIS office on these efforts seems imperative! The “GIS in Higher Education” website (currently under construction) will be demo’d and comments will be welcomed.

3:00 – 3:15

Break

3:15 – ??

Breakout Sessions:

  • Commercial and Public Data Updates – Dave Murray
  • GIS Education and Mentoring – Esther Worker
  • National Hydrography Dataset Stewardship Committee – Chris Brown
  • SWUG 2009 Planning Committee

GeoGeekTV May 8th @ 4:00pm MT

Posted by Dave Bouwman | Posted in GeoGeekTV | Posted on 08-05-2009

0

Given that Twitter is apparently down right now, I’ll opt to send out a notice that GeoGeekTV will be occuring at it’s usual time 4:00pm MT today Friday May 8th.

We’re moving to what we hope will be a permanent home at UStream. I will be setting up a separate site for the show and it’s eventual archive, but for now the url is: http://www.ustream.tv/channel/GeoGeekTV

As usual, join the chat, as some random questions, and we’ll try to answer them without excessive Rick Rolls.

This week Brian Noyle is taking his son to the Circus, so I’ll have Michael Hayden – one of our Javascript Dojo kung-fu experts with me. And as always – some Colorado beer to virtually share with you all.

Speaking Tuesday at the Boulder GIS Developer Group

Posted by Dave Bouwman | Posted in Presentations | Posted on 04-05-2009

0

Just a note to readers in the Denver/Boulder area – I’ll be speaking this Tuesday evening at the Boulder GIS Developer Group.

Julie Kub, who runs the group, invited me to give my Dev Summit talks, so I’ll be doing a slightly re-mixed combination of “Designing for the GeoWeb” and “Unit Testing 101”, and then taking random questions. We *may* try to stream it, but I can’t promise anything (we’ll tweet that right before if it’s going to happen). Drop by if you are in the area.

The meeting is this Tuesday, May 5, from 6 p.m. to 7 p.m. at 66 S. Cherryvale Road in Boulder. If you are thinking of coming, please let Julie know

jkub [at] its [dot] bldrdoc [dot] gov

GeoGeekTV: Today at 4:00pm Mountain…

Posted by Dave Bouwman | Posted in .NET, ArcGIS Devt, GeoGeekTV, GeoWeb, Life | Posted on 01-05-2009

2

For the last 3 weeks Brian Noyle and I have been doing some videocasting – really off-the-cuff type of stuff. We’ve tried a few different services Kyte.tv, Mogulus.com and UStream.com, and it seems that for most viewers Kyte.tv has worked the best.

kyte

Now that we’ve sorted that out, we’re hoping a wider audience will join in. Here’s how it works:

1) Brian and I visit a local beer store and return with a few cold ones.

2) We start the web cam, and crack the beers.

3) We talk about what we’ve been doing that week and take random GIS/Design/development questions from the audience (via chat)

4) Somehow an hour goes by, and it’s fun for all involved.

So – if you’re near a computer around 4:00pm Mountain time, pop over to http://www.kyte.tv/ch/288902-geogeektv and ask a question, chat with other geogeeks, or heckle us from afar.

You can check out a previous “show” here: http://www.kyte.tv/ch/276222-dtsagile

Moving forward, we’ll get some other people to drop by and do ad-hoc interviews, and generally carry on about whatever seems interesting. Hope you can join us!