Adventures in the Forbidden Zone

Image for post
Image for post
Photo by Klára Vernarcová on Unsplash

Objective

I have been working on a software platform in Unity — see www.virgis.org. This platform is a complicated set of C++, C# and Unity modules.

Initially, this whole platform was implemented as a single large Unity project. As we progressed the software dependencies became more complicate and this approach became a barrier to progress.

So the decision was made to break the platform up into a set of packages and use package management to control the dependencies.

This is a set of articles about that journey.

Architecture

The ViRGiS platform (without going into too much detail) is made of…


How to integrate the Package Managers

Image for post
Image for post
Photo by Lance Grandahl on Unsplash

Background

I am expecting most people who know about Conda and Unity are thinking “Why integrate them?”. I am coming to that. First a little bit of background.

Conda is an open-source, multi-platform and multi-language package management system. It started as part of the Anaconda data science environment targetted at Python and R but has proven so useful that it has been spun out on its own.

The primary value of Conda is:

  • It is multi-platform, running on Windows, Mac and Linux,
  • It is multi-language, supporting Python, R, Ruby, Lua, Scala, Java, JavaScript, C/ C++, FORTRAN, and more…

Creating your own Conda Packages

Image for post
Image for post
Photo by Steve Johnson on Unsplash

Conda is a modern and advanced package management platform that is used across the data sciences but also, these days, much wider.

This article goes through some of the complexities of creating your own Conda package particularly focussing on putting C++ libraries in Conda packages.

This article will come in three parts:

  • The concepts,
  • Workflow to create a package, if you don’t want the concepts then skip straight here, and
  • A list of resources used and samples.

For more details to the background of this article and also how Conda can also be used in Unity projects, see this article. …


Creating your own Unity Package

Image for post
Image for post
Photo by JESHOOTS.COM on Unsplash

Packaging code up into components, modules or packages is an important tool for code and version management for any project.

This has not always been easy for Unity Projects, and still remains an area of complexity and possibly an area where Unity is deficient. This will be a brief discussion of what to do and how to do it.

This article is part of a larger set about componentisation of Unity projects.

A Brief Detour about Unity

I am not going to provide much introduction to Unity, since if you do not know what it is then this article is probably not of much interest. …


A simple and quick recipe for a web app

Image for post
Image for post
Photo by Isis França on Unsplash

When it comes to quickly creating a highly interactive web site, whether for a niche audience or as a demonstration of a concept, I find that a combination of Google App Engine, Angular and Python provides the best solution.

The Requirement

I often find myself needing to quickly create a full-stack web application.

This is partly because of my personal approach to creation, which is very much prototypical. And it is partly because I believe that too many sites that should end up highly interactive end up as passive sites because people think a good web app is too expensive and my belief takes the form of “let me just put something together quickly to show what is possible” ……


Understanding GPS altitude and how to get a reasonable result.

Image for post
Image for post
Photo by Jack Anstey on Unsplash

The problem

The trackbash.co.uk website is aimed at railway enthusiasts. One thing they all said they particularly want is to be able to see the gradient of the track they are currently travelling and if possible elevation profile of the track as they pass over it.

This turned out to be a long way from the trivial problem that it looks to be to start with.

This article has two distinct parts :


The world’s most niche post ….

Image for post
Image for post
Envelope plot for the angles between Nearest Neighbours in a Point Process Data set

Background

This is a very niche post. But, I was working with some spatial data and wanted to represent the data against an envelope of CSR picks.

This should be a relatively common requirement but I could not find anything about how to do. So I wrote an article about the way that I did it.

The Problem

A common problem in spatial analysis is to want to plot a set of observations against the “envelope” of results from a set of draws from a Monte-Carlo simulation, usually of Completly Spatial Random (CSR) datasets or datasets that follow the same density profile as the observed sample data. …


Using Service Workers and PWA with Angular Leaflet or OpenLayers

Image for post
Image for post
Photo by Enrique Alarcon on Unsplash

This is the second part of a series about Including Leaflet javascript interactive maps into Angular.io applications. The other parts of the series are :

The objective of this series is to that you will be able to create a Leaflet map in an Angular-CLI based project without hassle, fuss and dead-ends.

Part Five

In this part, we will…


How to use the powerful mapping library in Angular

Image for post
Image for post
Photo by Kelsey Knight on Unsplash

Having been using Leaflet for mapping in Angular and writing about how to do it, I have now been working on some mapping projects using OpenLayers.

Why OpenLayers

Having written a whole series of articles about using Leaflet in Angular — i.e. see this …

… Why change to OpenLayers?

Leaflet is a great library and it is very easy to quickstart simple projects. It needs very little set up and has a large library of controls and extensions. However, if you want to go beyond the basics, particularly in terms of complicated projection manipulation or wanting to have real GIS symbology on the layers (i.e. programmatic control of the shape, size and colour of features) as opposed to simple markers, Leaflet runs out of steam quite fast. …


Using Angular to Create an Intelligent Compass Map Control

Image for post
Image for post
Photo by Alex Perez on Unsplash

For a recent project demo project (which is not public) I wanted to create a “Nautical Compass Rose” control for an interactive web map using Angular.

This turned out to be a really interesting problem. I thought it would make a good article.

What is a Nautical Compass Control

About

Paul Harwood

Paul is a long time veteran of the tech industries — with 30 years in the trenches including stints with Nokia and Google as well as startups QR8 and trackbash.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store