Test Driven Development has been a major part of the discipline of software engineering for almost two decades; a Red-Green-Refactor cycle helps keep codebases maintainable, while lowering the risk of adding new features by protecting against regression and facilitating extensible designs.
The design and history of arcpy and its related modules can make it difficult to test, and automation is not always given high priority in GIS projects. Nevertheless, there are techniques to help ease the process, and it’s relatively easy to test drive the development of GIS software.
View Post
As a full-time remote developer, it goes without saying that an internet connection is a requirement; every developer will be pushing and pulling from source control, chatting via slack, and performing hundreds thousands of package installs and/or stack overflow searches.
I also spend a lot of time using some sort of screensharing tool–all of our production code is written in pairs over screenhero, and we do our daily standups, architecture discussions, and watercooler sessions over Google Hangouts.
View Post
Look at any modern application, ETL process, or data analysis, and you’re likely to find a textual component. While the ubiquity and value of textual information is clear, working with text requires specialized training and knowledge that often fall outside the realm of traditional developers and analysts. The power and insight that can be gained from textual data coupled with the unique skills needed have led to an explosion of demand in the text industry.
View Post
Lately I’ve come across several software projects at work that have build artifacts checked into their repositories–nuget packages for .NET, minified bundles on javascript projects, and .pyc files in Python modules.
Consultants in the field of GIS often work across multiple languages, and it can be difficult to keep track of which files should be ignored by source control; luckily there is a collection of standard .gitignore templates. If you find that your project has files checked in that are included in one of the templates, that’s a good sign that something is amiss!
View Post
So I’m at SCNA, participating in the Code Retreat. If you’ve never done one, the idea is that you pair up with another developer, and work on Conway’s Game of Life for 45 minutes, using TDD. At the end of each 45 minute block there’s a short retrospective, then you pair with a different person and start all over again. Subsequent blocks might also have restrictions, such as “no passing primitives across function boundaries.
View Post
Developer Retention I’ve been having a lot of discussions lately with other devs about job satisfaction; seems like many of us want the same things, but I thought I’d capture a few thoughts here.
I want to use best practices If I was interviewing someone who had no experience with automated testing or continuous integration, I’d be a little worried. Likewise if they weren’t familiar with modern project management practices that focus on quick iteration and delivering value, or if they had no concept of the value proposition of open source.
View Post
The other day I was called upon to help a 5th grader with her homework. She had gotten the first two problems right, but was having some difficulty with the third one:
I can’t help but wonder who chose that problem, and what their intention was; if it’s supposed to be a way to get kids thinking about algorithms and the idea of proof, that’s great. Probably most kids would start off okay–you find all the paths and pick the shortest one.
View Post
This is the sort of thing that seems really easy in hindsight, but it took me a little while to get right.
There are lots of things that I don’t like about PL/SQL, but I often prefer to do spatial operations at the table level inside the database, rather than using ArcPy or ArcObjects; I think that it’s easier to reuse queries like this, the code tends to be more readable and concise, and performance is almost always significantly better.
View Post
I’ve been thinking a lot lately about the idea of convention in software development. The more I’ve worked with the ASP.NET MVC framework and nHibernate, and dabbled with Django, the more I’ve been able to see the benefits of designing and coding this way. It’s also made me consider my own biases and background, and realize why I’ve struggled with the idea in the past.
I started out as an embedded developer, and for a long time, everything I wrote was in C or some flavor of assembler.
View Post
My car broke down the other night; I had dinner with a friend, and left the restaurant to find that my car wouldn’t start. I ran back around the building, just in time to see my buddy driving off. Chased him five or six blocks, across the street, up a hill. When I got to the top, he was gone. Walked back to the parking lot, flagged down a helpful passer-by, and tried a jump-start; nothing.
View Post