LizardTech.com

Archive for the ‘New and Interesting’ Category

Attend the next LizardTech webinar by iPhone

Wednesday, January 20th, 2010

GISuser‘s Glenn Letham recently blogged about how he found himself unable to connect to one of our webinars via Webex’ PC client but at the last minute he noticed that the Webex invitation had also included a link to an iPhone app that he didn’t even know about. With a little quick emailing, he was able to connect after all and logged in just in time.

We didn’t know about this method either and we thought it was news worth sharing. For those of you who have an iPhone and are curious about how you might use it to attend one of our webinars, here’s the relevant excerpt from his report:

there i was, sitting in a coffee shop grabbing a cup and loading the PC client from WebEx when the app failed and wouldn’t load for me (perhaps I missed something but I looked around and couldn’t troubleshoot the problem). Luckily a link to the WebEx iPhone app was provided.

So, I simply forwarded the email with the link to my gmail account (accessible via my iPhone mail client), installed the application, and logged into my webinar… right on time. The application serves up a slide show, complete with list of attendees and ability to chat (an option to review slides would be good). The app then called me and I listened to the audio portion via phone call streamed to my headphones so i wouldn’t disturb anyone inn the coffee shop – great stuff!

Glenn’s tip is timely because we’ve got another webinar coming up on January 26 at 11 a.m. Pacific Standard Time. In WMS: Behind the Scenes, you’ll learn the technical details of how WMS works to serve map data to network users. Sound interesting? Why not register right now?

For more information about upcoming LizardTech webinars, visit http://www.lizardtech.com/events/webinars.php.

LizardTech Engineering’s introduction to LiDAR Compressor

Monday, July 13th, 2009

This morning, July 13, 2009, LizardTech unveiled LiDAR Compressor. This application allows consumers of LiDAR data the same benefits LT has provided raster consumers for over 10 years. The press release describes some of the product’s overall capabilities and benefits. I was privileged to be the project manager for this effort and in this post will describe the product from an engineering perspective.

At the lowest level, the application leverages our experience doing wavelet-compression. Our specific approach is the subject of a patent application and I won’t attempt to describe it in detail. However, a concise summary is that we do a 1D wavelet transform on each of the channels of interest (x, y, z, intensity, etc) and then use the same compression techniques we use in our MrSID and JP2 implementations (bitplaning, entropy encoding, appropriate quality-weighting of the bitplanes). 

At the SDK implementation level, we depend on several packages from the OSGeo stack. We use liblas to read data out of the LAS files. LT is proud to be the first (to my knowledge) commercial application of this industrial-strength library. (Regular readers of our blog may recall that last March we supported the OSGeo Code Sprint in Toronto; liblas was certainly part of our interest there!). Liblas, in turn, uses libgeotiff to decode the CRS information in the LAS files and the now venerable GDAL to translate that into a WKT that the rest of us can understand. The result is a C++ SDK available to our application … and soon to yours too (decode only).  We’ve got distributions for both Windows and Linux which will be available on our developer’s site any day now.
 
liblas and GDAL in LiDAR Compressor

At the application level, the underlying technology has changed as well. Our flagship product, GeoExpress, is written in managed C++ using the Windows Forms library. Our most recent products (GeoViewer and Lidar Compressor) are built in C# using WPF. Our experience was that this change allowed much greater developer productivity and the creation of more flexible (not to mention prettier) applications. For example, I suspect we would not even have attempted a ListView with dropdown boxes in the header (all dynamically populated based on the selected input text file — see Figure 1 below) if we had to implement it without XAML support:
 
Importing a text file

Figure 1: Importing a text file.

Additionally, the application makes extensive use of the WPF/.NET threading support. This allows the application to achieve two design goals: (a)it provides first class support for text-based LiDAR files and (b) it can run several jobs at once. 

Before we can do any kind of processing (e.g. compressing, viewing) we need to tell the file’s reader how many points there are and what the overall extent is. For LAS files (and MG4 files) this is no big deal because everything we need to know is stored explicitly in a compact header. For text files, it’s not stored at all and must be calculated which involves reading the entire input file. This “initialization” (see figures 2 and 3 below) can take a long time and needs to happen in the background.

Initializing

Figure 2: Text file initializing (in the background, so the application is still responsive.)

A few minutes later …

Extents

Figure 3: We’ve read the 321 Mb text file and now know the extent and number of points.

Running several jobs concurrently in and of itself is not a hard problem. The difficulty comes when we consider how to provide feedback (progress bar, log messages), the ability to cancel and deal with failures. For historical reasons, GeoExpress runs its compression work in a separate process. This provides excellent isolation (uh,… that’s part of the ‘history’) but complicates tight integration with the parent application. This is part of the reason we could not include the ability to run concurrent jobs in GeoExpress 7. Lidar Compressor uses WPF’s built in BackgroundWorker class to manage the worker threads.  This vastly simplifies the integration tasks. The result is an application that leverages the multi-processor capabilities of modern hardware as well as a UI that is simple to understand and use (see Figure 4 below).
 
Five jobs running simultaneously

Figure 4: Five jobs running simultaneously.

Everything the user sees is pure WPF except for one thing:  the viewer. The viewer is a WPF wrapper around DirectX. There’s a lot of math that goes into manipulating 3D objects. DirectX provides an API to do this for us and, very significantly, runs it on the graphics card (i.e. no burden on the CPU). So, the good news is that rendering is blazing fast. The bad news is that DirectX 9 D3D (which is what we use) gets very finicky when it comes to older OSs (that is, XP), drivers and hardware. We were not able to get a really satisfying resolution to when DX would fail and why, but we were able to guard against it so that the application handles the failure gracefully.

3D_sid_o

Checkout the free trial and let us know what you think.

Going Boldly Where No Lizards Have Gone Before

Friday, July 10th, 2009

You may have noticed a new product from the Lizard Labs a couple of months ago: GeoViewer 3.0.  What you may not have noticed, however, is that we’ve started using some new technologies to build this soon-to-be-award-winning app.

Installation
GeoViewer is a web download: you click on the link on our website and the app is downloaded and installed right quick.
GeoViewer 3.0 installation

That’s a nice improvement over the way things used to be.  But the really good bit is that the application is also able to detect when we’ve posted a newer version, perhaps with bug fixes or new features, and automatically update itself.  This dramatically simplifies life for you and us: we don’t have to force-feed you new CDs and you don’t have to wonder if you’ve got the latest version.

Case in point: shortly after posting 3.0.0 on the web, we found a small bug we needed to fix.  Nothing major, really, but annoying enough to justify getting a fix to our customers.  And we’d already had thousands of downloads.  What to do, what to do?  In the old days we’d have tossed out hundreds of 3.0.0 CDs and burned a bunch of new ones.  Now, though, we just post 3.0.1 to the web and within a week all the deployed copies out there will notify their users that a new version is available and would you like to go ahead and download it?  (This feature can be disabled, of course: go to Options, then GeoViewer update preferences.)

This functionality comes to us courtesy of a relatively new Microsoft .NET feature called ClickOnce, one of the new technologies we’re starting to use here.

Look-and-Feel
GeoViewer doesn’t look much like it’s big brother, GeoExpress. 
GeoViewer 3.0 screenshot
GeoViewer 3.0 screenshot

Notice the soothing blue-grey color tones and those gentle gradient fills?  Goodbye, battleship gray!

We’re not building consumer-facing Twitter clients out here, and we’re not certainly professional UI designers, but we do realize that there is something to be said for working towards a visually pleasing app, even in this relatively staid world of GIS apps.  Look for all our products to start looking and feeling better in future releases.

Oh, and it’s not just the look-and-feel that have gotten the reboot.  You can’t really see it, but under the covers we’re using another new Microsoft .NET technology called WPF (Windows Presentation Foundation) to build GeoViewer.  The WPF Framework gives us programmers a much better way of expressing and writing the user interface logic – gone are the days of event loops and MFC and WM_PAINT messages: we now use XML to control the application’s appearance and elegant property bindings to control the behavior.

And C#
Since we’re embracing .NET technologies for our Windows applications, we’ve also had to make the switch from C++ to C#.  It’s a happy new world to be in – expressive syntax, rich API, and a garbage collector you can trust.  Some time ago we tried programming under .NET using Managed C++, but it was pretty painful.

Of course, our underlying SDKs will remain as C++ libraries.  We’ve learned enough P/Invoke to be able to write our GUI front ends in C# and have them interop over to the C++ layer for the hard stuff.

Upcoming
We’re pretty jazzed out here about being able to break out of the old InstallShield-MFC-C++ world and use some new technologies that allow us to churn out better products faster.  Look for more goodness as we post more releases in the coming months.

Help for the Helpers – WritersUA 2009

Thursday, April 23rd, 2009

This is sort of an off-topic post, obliquely related to things geospatial by virtue of the fact that our geospatial products come with help documentation. As LizardTech’s technical communicator, I attended WritersUA 2009 at the Westin Hotel here in Seattle a few weeks ago. The WritersUA Conference is the annual shindig for user assistance professionals (a.k.a. tech writers and our ilk).

Overall I was impressed, and in a lot of ways. There were over 300 attendees from all over the country, nearly 25 exhibitors and sponsors, and dozens of presenters over the course of three days. There was free wifi throughout the entire conference space, a huge Twitter monitor, and best of all, the opening speaker was Scott McCloud, who has written/drawn award-winning books (“Understanding Comics” et al.) and did the famed Google Chrome comic book documentation.

As is probably normal, the sessions were a mix of things that sounded information-packed and edifying and things that sounded irrelevant, although there were surprises. For instance, the closing session on illusion and mental models by a comedian/hack magician turned out to be one of the most inspiring sessions of the whole conference, as was Scott McCloud’s opener, even though you might have thought cartooning doesn’t have much to do with user help. And one session I was looking forward to turned out to be just bullet points that I might have come up with myself. The most useful session in terms of how to do things better was a session on improving knowledge bases for better troubleshooting.

I think I heard the word “cognitive” at least twice a day, which I thought was significant. It tells you how important the mind of the user is to UA professionals.

In my opinion there was a superfluity of sessions dealing directly with the Darwinian Information Typing Architecture (DITA), an XML language for documentation that the government is mandating wherever it can these days, and there was an inescapable prevalence of tool-specific sessions, lamentable only because most were not about the tools I’m using.

Notes on some of the most inspiring (in one case depressing) sessions:

Opening Session
On Monday morning Scott McCloud submitted to a Q&A session in which he described how the Google Chrome comic came about, what it was like doing it, and how the end result was received (wildly successful, borrowed from and parodied all over the Internet).  

Scott McCloud

The big thing for me in Scott’s talk was the idea of isolation through sequence, which is what distinguishes comics from other drawn art. Few of us would want to turn our help into comics, but the idea of directing the user’s attention by using the same tools the cartoonist uses – removing everything from the user’s focus except what they need to know at that moment – is something that all of our user assistance projects would benefit from. He also talked about how the mind remembers static images more readily than moving ones, and about the notion of “two cognitive altitudes” (context and detail) and the importance of the balance between them.

As for the man as a speaker, I was amazed at the prehensile-ness of his mind. You could tell from the way he listened to questioners and then reframed their questions that his mind was completely wide open like those big dishes in the desert listening to noise in outer space, and when he listens you can see his brain reaching for whatever metaphor or symbol or phrase that will best capture the essence of the conversation. He’s really a technical communicator at heart. If you ever get a chance to hear him, take it.

User-Centered Design of Context-Sensitive Help
Matthew Ellison’s talk was a great intro to context sensitive help (CSH), in which tips or other help-ish material are built into the app, and are either visible to the user as they work or easily accessed by an icon or underlined phrase. CSH is becoming important as UA writers begin to acknowledge that no one reads help unless they are forced to at gunpoint (more on this, unfortunately, below). But more than an intro, it really gave solid best practices. One point that stuck with me was, “focus on answering likely questions rather than documenting the application.” Many times, we tech writers are tempted to write from our model rather than the users’, but again, more anon…

Best Practices for Embedded UA
Scott DeLoach talked about the most useful ways to embed assistance in the UI in exactly the amount and timing (and even phrasing) needed by the user. It seems to be a scientific fact that as long as you don’t call something “help” and it’s right in front of them, users will consult it. Lots of good info here, such as the fact that a novice will eagerly click “Quick tip” while an expert will want to see something like “Tell me more…”. One takeaway: sometimes thoroughness is less important than usefulness. Scott asked us to ask, “What are the things the user HAS to know in order to successfully complete the task?”

Lessons Learned from Research on “Help”
The percentage of users who consult online help and printed help, respectively, are “virtually no one” and “actually no one.” Those are the facts. Professor David Novick of University of Texas at El Paso seemed from the start to want to make us cry, and from the beginning he drilled home the dour and research-supported truth that we’re wasting our efforts. There was no good news to balance this glum panorama, either. It was a dizzying ride through a milky-way of dismal data points, at the end of which he said, “and when they DO use the help, research shows that it doesn’t make users more productive.” We all went out of there and shot ourselves.

Better Knowledge-Base Articles for Complex Troubleshooting
To my lights, the best session of the lot. I’m glad I have the slides, because I could barely keep up with this guy. David Farkas is a professor of technical communication at the University of Washington here in Seattle. He moved through his slides very quickly, rightly using them only as touchstones for the actual content of his presentation, and if you took notes you missed the next thing. David offered lots of good info I will be reviewing, like how to title KBs most effectively, how to structure them, and how to “reduce the cognitive load” on the user’s mind as they troubleshoot problems. He regards the KB’s purpose as a troubleshooting mechanism for “bugs, known issues, things that fall between the cracks” rather than a body of help topics per se.

Magic and Mental Models: Using Illusion to Simplify Designs
Jared Spool’s “magic” presentation on Wednesday was a fantastic end to the conference. It seemed at first to consist of amusing but unsuccessful attempts to read people’s minds, but that was all just a way of demonstrating Kano’s model and the role of delight, which, nutshelled, says that if you get the basic functionality right (things people need and expect), you can add another aspect Kano calls delight. This is a little extra something the user is not expecting. One example he used is that when you attach your iPod Nano to sync it up the image changes to an image of not only the model you have but also the same color. Jared said most users won’t even notice this, but those who do will experience delight.

Delighted

Jared also explained the difference between the designer’s model and the user’s model this way: none of the Disney imagineers wants a vistor to the haunted house ride to come out at the end and say “Oh my gosh, the speakers around turn #3 were amazing…I have to have that in my house!” The user is supposed to have a model in his mind that says THIS IS A SCARY PLACE, THERE ARE GHOSTS AND HALLOWS IN THERE. (Jared didn’t say “hallows”, that’s my paraphrase.) The designer’s model is different; it’s about wires, mirrors, speakers and other functional components. The point is, we who make products don’t need to explain our model, we just have to make sure the user’s model works.  

In the end Jared pulled off a bona fide magic trick and we were all delighted.  

What I came away from the conference with was a motivation to reduce the “cognitive load” on our users, give them the assistance they need (and only what they need) when they need it, and finally to delight them.

Our customers deserve all that. After all, they have the world on their shoulders.
 

Express Server serves up New Jersey

Monday, January 5th, 2009

The State of New Jersey’s 2007 orthoimagery is now available for download from the New Jersey Geographic Information Network’s newly-designed NJ Information Warehouse, which uses LizardTech’s Express Server to serve all compressed orthoimagery layers.

NJGIN's Information Warehouse website

The imagery is available in both MrSID format (compressed 8-bit, 3-band, RGB natural color, 5000′ by 5000′ tiles) and JPEG 2000 format (compressed 8-bit, 4-band RGB plus infrared, 5000′ by 5000′ tiles). The site looks great and is easy to use, and we’re pretty proud of the way Express Server performs on it.

You can add the WMS layer of New Jersey’s 2007 orthoimagery into any application supporting WMS by entering the following URL:

http://njwebmap.state.nj.us/njorthos