Automating WinSCP to Deploy a Site Part 2 Sep 10 2022

In the last post I’d made WinSCP script to copy a local folder to a remote folder to deploy my website. I’ve made some improvements since. Instead of using put to copy the files across I’ve used synchronize to do so.

synchronize remote -criteria=size C:\Path\To\New\Site\

synchronize basically makes one folder the same as the other. You could switch out remote and use local to download changes from the remote. The critera part tells how we compare files between local and remote. As I’m using Hugo, the timestamps get binned when the site is compiled so I only have the sizes to go by.

Another issue I’ve had is with Hugo itself not copying assets that aren’t directly used (e.g. images). So I’ve bunged an xcopy together with the above to make this handy batch file.

Wheel in jasemagee.bat

xcopy /E /i /y C:\Path\To\Site\assets\img C:\Path\To\Site\public\img

"C:\Program Files (x86)\WinSCP\" /log="C:\Path\To\WinSCP.log" /ini=nul /script="C:\Path\To\Sync website.txt"

Automating WinSCP to Deploy a Site Sep 9 2022

This is just a snippet of code to automate the deployment of a website (Hugo, Jeykll, etc.) by using WinSCP. I’m using WinSCP because I need WebDAV. I want the script to connect to remote, change to the websites directory and upload the new website version from a folder (overwriting everything in the process) before disconnecting. Here is the script.

open davs://

cd /path/to/website/directory

put C:\Path\To\New\Site\*



This was the first attempt at running the script. It worked but the terminal did not wait for the command to complete, which wasn’t ideal. The only way to confirm it had finished was by reviewing the log file.

"C:\Program Files (x86)\WinSCP\WinSCP.exe" /log="C:\Path\To\Script\WinSCP.log" /ini=nul /script="C:\Path\To\Script\Deploy website.txt"

WinSCP also provides a .com file for scripting, which will cause the terminal to wait.

"C:\Program Files (x86)\WinSCP\" /log="C:\Path\To\Script\WinSCP.log" /ini=nul /script="C:\Path\To\Script\Deploy website.txt"

Git Dubious Ownership Aug 31 2022

I’ve just setup a new computer and have been running into this dubious message when using git.

fatal: detected dubious ownership in repository at 'E:/seeker'

 To add an exception for this directory, call:
        git config --global --add E:/seeker
 Set the environment variable GIT_TEST_DEBUG_UNSAFE_DIRECTORIES=true 
 and run again for more information.

Note that tools using git (VS Code) may not work or give any feedback about this fatal error. You have to use the terminal to get at it.

If you DuckDuckGo the message sites will tell you to add the directory as a safe place or turn off this security feature completely in git. This seems a bit silly. The error is telling you that the directory is not owned by the current logged-in user of the machine. I keep my development code on its own SSD which I’ve migrated to the new computer and so Windows had no idea who the owner actually is.

To fix this the best thing you can do is simply change the owner of the directory.

  1. Right click the folder
  2. Click Properties
  3. Go to the Security tab
  4. Click the Advanced Button
  5. At the top on the ‘Owner:’ item, press the Change text at the end
  6. Type part of your username into the name field, Click ‘Check Name’
  7. Ok, ok, ok, ok, etc.
  8. No security issue for git anymore
  9. Make cuppa

Trenchbroom Half-Life Setup Jun 20 2022

I’ve had an itch lately to make a map for Quake or Half-Life so after a bit of research discovered Trenchbroom which does both. It seems to be highly regarded amongst Quake mappers and has ’experimental’ support for Half-Life. After an hour of research I couldn’t find an easy article to set it up for Half-Life so went down the rabbit hole enough to figure it out.

After more research people seemed convinced Trenchbroom was fine for Half-Life mapping but Trenchbroom does say Half-Life support is experimental so I was a bit suspicious.

The first port of call was checking out how you’d setup Hammer (the original Half-Life map editor) so this excellent site came up quickly for general GoldSrc (name of the Half-Life engine) modding and mapping goodness. All beginners guides say you should use Vluzacn’s ZHLT to build your maps. Looking up ZHLT started to ring some bells from the last time I tried to do Half-Life mapping (when I was a young person). You pass your designed map to a series of tools to “compile” it into an actual game map. These are…

  • HLCSG - makes solid geometry by taking your map and making polygons from the brushes
  • HLBSP - makes the BSP (binary space partition) node tree
  • HLVIS - Generates visibility flags for the polygons (what the player can see)
  • HLRAD - Generates lighting

Looking into Trenchbroom you’ll find similarish tools pre-filled in for Quake, so a bit of fiddling around and I made it work using this.

Here we export the map (in case we haven’t saved it), run the tools above with some parameters that point to the exported map and copy the files into Half-Life’s valve/maps folder (would do different folders for mods).

Next, we setup the Engine simply telling it how to find hl.exe

The game also needs to know what map we want to run (although you can run it via the console) so we use +map XXX and -dev (just enables dev mode).

The texture WADS can be added at the bottom right in the ‘Texture Collections’ area. You’ll find the WAD files in the Half-Life directory (you’ll want at least halflife.wad). A prompt will ask how you want to link the WAD, I went with Absolute but do whatever works for your setup.

Couple of issues

Models do not appear in the editor (e.g. you’d expect a scientist model instead of a green box ideally). Not a big deal.

The properties for entities are not correct and/or auto-populated. I had to manually had Brightness, Appearance and Quadratic. The pre-populated _light value was wrong, so I changed it to 255. You’ll need to dig out the properties you need and add them manually when dealing with entities.

Ultimately, I really like Trenchbroom and will spend some time learning it.

Garmin FIT Files Jun 8 2022

As I little bit of a side project I recently touched my toes into the world of sports activity data by reading some data from my Garmin watch.

Garmin uses a binary file format called FIT which is a type of GIS file containing geographical data alongside sport data points for whatever activity you're doing.

The FIT file itself wouldn't be hard to parse by hand but there is no point doing so as Garmin provide an SDK to read the data into memory. Once the file is parsed, you can easily export to CSV or do some data analysis with it.

I wrote a small C# app to read any single FIT file and output a bunch of diagrams. Below I've fed the GPS data into OpenStreetMap using the awesome Leaflet library to plot my recent walk. I've also done a couple of charts using Highcharts. Not bad for 2 hours work!

My main takeaway from this small project is suprise at the lack of quality alternatives to Strava. Obviously there is a lot more to Strava (comparisons, analysis, etc.) but with very little effort I've made a dumb activity page.

Previous Page: 2 of 12 Next