Wednesday 22 October 2014

Automate mkdocs html files build process

At work I needed to find a way of writing a lot of documentation easily and quickly. The system was going to be used by technical and non-technical people.

For this I am current looking at a great project called mkdocs. This is a python program that allows for all documentation to be created in markdown syntax and then built into a flat html website.

Markdown is a text to html processor that has an easy to learn syntax . Markdown files can be created in any text editor. So users can be focused on creating documentation rather than getting distracted.

My idea was to allow all user to create documentation and see the changes instantly on the website. mkdocs has a setting that dynamically shows how your pages will look in a browser while creating the documentation source files.

This works great but I needed to be able to build flat html files and copy them to a web server.

Below is the batch file (windows)
REM Automate the build process of creating a website from mkdocs markdown

REM Change to source drive
X:

REM path to docs site to convert
cd X:\DocSource\admin

REM covert to flat html website (this creates a 'site' folder)
c:\Python27\python.exe c:\Python27\Scripts\mkdocs build

REM copy site to web server folder
xcopy site\* c:\inetpub\wwwroot\admin\* /s /e /y
This can run on a schedule or even could be set up to run when something changes in the document source location.


Tuesday 8 July 2014

Using Mozilla Webmaker to create a map of all Gurdwaras (Sikh Temples) in Bradford, UK

I have created a map of all the Gurdwara Sahibs in Bradford. It uses leaflet.js and openstreetmap for the mapping. It was all created in Mozilla Thimble which allows for easier javascript and html editing through an online editor.

Monday 7 July 2014

Geocoding address data in Excel using google Geocoding API

I had a long list of addresses that I needed to show on a map. I found a great article that showed exactly how to call googles geocoding mapping from Excel.

The only issue I had was that Googles API doesn't like it if too many requests are made too quickly so I created a function to add the geocoding calculation into a column one cell at a time and waiting one second between calls.

Below is the function

Sub Geocoding100()
    Dim I
    For I = 1 To 100
        ActiveCell.FormulaR1C1 = "=GoogleGeocode(RC[-1])"
        ActiveCell.Offset(1, 0).Select
        Application.Wait (Now + TimeValue("00:00:01"))
        Next I
End Sub
I can leave this function running in the background to geocode a list of addresses in excel and I am not hammering Google Geocoding API.

Its a win win situation!