My Programming

My Favorite Programming Languages

I've been programming in Java for over a decade and it is my favorite (and most productive programming language). My Java programming includes work on core development and plug-in development for OpenJUMP. I also use Java to automate spatial data processing at Guida Surveying.

My second favorite programming language is Python, which I use to script and customize ArcGIS for the desktop. I use Ruby programming to customize the 3D modeler SketchUp and AutoLISP and C# to customize AutoCAD Civil 3D.

My favorite IDE is Netbeans...but I also use Eclipse and Jetbrains IntelliJ.

I can write HTML and CSS and wield Javascript if I have to...but I prefer slinging code for the desktop.


Advocate of Open Source and Open Technology Standards

I'm a strong advocate of open source software and open technology standards.

My open source code is released through the SurveyOS Project, a member of the Software Freedom Conservancy.

I also publish open technical standards for GIS and land surveying at the SurveyOS Project. My current open technical standards are the COGO Simple Text Format and the Triangulated Irregular Network Text File Format.


My Current Programming Hot Spots

I'm interested a few specific topics right now. Most of these are in the Java programming realm, but one or two have to do with Python programming.

I'm very interested in automated point cloud processing of data from Aerial LiDAR or terrestrial laser scanning using Java. I've started tinkering around with some code for this. My initial impression of the commercial tools for point cloud processing is the tools are limited and immature. Trimble Realworks has the best toolset and easiest user interface for the tools I've tried so far. (These tools I've tried include Leica Cyclone.) However, neither Realworks or Cyclone makes scripting to enable automated processing easy. The open source tools available for this are non-existent or very clunky. Point cloud processing is an area I'll be working more on moving forward.

An area related to point cloud processing that I'm interested in is TIN creation, analysis, and management. I'd like to build a plug-in for this in OpenJUMP that layers TIN support on top of JTS.

I've also got an itch to scratch related to simple on-desk collections for Java. I like MapDB, but I'm unsure about its stability, and it seems a little more complicated than I want. It also switched over to Kotlin from Java (bummer). I want to see if I can play around with a simple key-value store or linked list using binary or text files and Java NIO.

My hot spots in Python mostly relate to GIS and QGIS in particular. I want to write my first QGIS plug-in to enable some of the basic editing tools we have in OpenJUMP. I'd also like to learn more about how I can enhance the map book/map publishing functionality in QGIS. I'd also like to contribute some code to Shapy...but my Python code might be too javalike for this. :]

The QGIS Print Composer