Elixir Programming on Windows

I am working through the Programming Elixir book.

I am experimenting with a mix of OSX and Windows.

Intelij IDEA does provide a free ide that works for Elixir

However on windows some of the run commands need to be changed

mix run -e ‘Issues.CLI.run([“-h”])’

needs to be replaced with:

mix run -e “Issues.CLI.run([‘-h’])”

Constructing a Build Pipeline

Given the upcoming demise of snap-ci I have been working on finding a replacement.

Snap-ci allowed my team to work exclusively on a single master branch and have tests run on every push. From this it could be manually pushed to a series of environments in a strict order:

qa -> demo -> live

We assessed a large range of cloud hosted providers to attempt to replicate this.

Gitlab came close, but was too unreliable  (eventual consistency left a ui that was inconsistent on a single page!)

Circle-ci is our current contender. We can build everything that we need but temporarily  have resorted to Jenkins to provide our deployment pipelines. Circle-ci have promised that these will be available soon (within a few months).

Circle CI does respond very rapidly to git pushes (something that snap-ci had been rather sluggish). The integrated error log viewing is a distinct improvement  (snap made you download a tarfile containg a zip of the test reports – it was three steps to see the detailed error).

We looked at using heroku build pipelines but found it lacking in the hooks needed for pre-deploy steps. We use these to trigger our database migrations (also cdn and cms configuration ) before restarting the apps.

Keeping Java jdk working on windows

Windows development in java can be painful. This is mostly due to any new java upgrade breaking the java home setup.

To fix this I started to look for an ansible script to redeploy the jdk. However the script had a dependency on powershell. Once you are using powershell you may as well use chocolatey. There are now sone simple commands to keep java working:

Choco install jdk8

This must be run as administrator and will require a single confirmation.

However now I have the means to keep neo4j and gradle happy after a java upgrade.

 

Software Minitures

The Software Miniture is a concept that I came up with when experimenting with code generation. Its a cut down version of a larger application with a  minimal implementation of the concepts of a larger application. The idea was to perform experiments on the miniture that would be much faster than on the full application.

This idea also seems to be useful when chosing a replacement CI server.

What happened to the Cloud CI Providers?

2017 comes with the decommissioning of two cloud ci providers.

Snap-CI and Bamboo-CI are both shutting down.

Snap-ci provided a build pipeline (triggered by a github webhook) with log and artefact viewing. This was all configured using a clean UI which allowed environment variables to be stored as either plaintext or securely.

Finding a replacement is not simple. The options seem to include options without a ui to specify the pipelines or are much more expensive.

The roll your own optiona are complex possibly including docker hosted travis.

 

Lotus Improv equivalent in a Browser

This open source pivot table (http://nicolas.kruchten.com/pivottable/examples/local.html) brings the power of Lotus Improv to the web.

Lotus Improv was a groundbreaking spreadsheet that was based upon pivot tables rather than a simple grid. Lotus killed it as it was cannibalising it’s own Lotus 1-2-3 sales.

The pivot table above allows you to load a csv file (say the output of a Bigquery query) and then perform ad-hoc pivot analysis on it.  By dragging the column headings around you get to see your data summarised in your browser.  The sample could easily be extended to run a report from say a S3 bucket. This means that we could email links to pivot tables around…