Pointless Waymarks Software

Software from the Desert Southwest

Created by Charles on 3/11/2025. Updated on 3/19/2025.

Recently I moved my personal projects to Fossil. The move has been fun and interesting!

I'm newer to Fossil and so far for my reasonably simple use cases the cli + built in website have been an easy to work with combination.

But I miss Fork - a fast and friendly git client for Mac and Windows...

What I miss:

  • Quick view of changed and added files powered by a file watcher so the view is mostly-almost-always up to date
  • Quick view of file diffs
  • Fast mouse-driven selection of files to take actions on - I often want to group a few files into a commit and I find clicking a GUI list of files is faster and easier than using the terminal
  • Dedicated Window - when something is important, like version control, it can be nice to have a dedicated window/app

So with a distinct lack of Fossil tooling out in the world I thought it would be fun to write my own helper program! Goals:

  • Fossil has a nice command line interface - try to work with it rather than hide it
  • Be careful about duplicating views and features already in Fossil's web interface
  • Target frequent operations - I suspect that there is no real time savings over the cli for commands that you run infrequently

After about 4 weeks of personal time effort this is what Pointless Fossil - a Fossil SCM Windows Gui Helper looks like:

2025 March Pointless Fossil Main Window
2025 March Pointless Fossil Main Window.

It is very new but I'm actively using and enjoying it. This is very much a work in progress - not enough time to develop any interesting insights - but a few details that might be of interest are below.

Avalonia UI

Avalonia UI is one of several interesting cross-platform options for building desktop applications with .NET. Pointless Fossil is already the largest program I have ever built with Avalonia and overall it has been a positive experience. It seems to me that vs WPF you gain cross-platform potential and occasional syntax/framework improvements - you lose the large body of online help, there are fewer packages/less code available and there is not a great embedded web view.

Fossil JSON API

Fossil has a JSON API that allows you to retrieve information about the state of a repository - VERY useful!! But in the official binaries the json api is not available... To access the JSON API you will have to compile a custom version of Fossil - there is good documentation available, but this was an unexpected todo on the way to getting a working program!

Reading Standard Output

A requirement for the program was allowing the user to respond if Fossil asked a question on the command line. I hadn't written a similar feature before and I assumed that writing to stdin was going to be the messy part. It turned out that stdin wasn't the problem - many of the questions Fossil asks don't end with a new line and I was surprised by the code needed to read stdout in characters rather than lines! GitHub Copilot was very helpful in working out the details - the start of my code is below, I still can't help but wonder if there is a better/simpler way...

        var buffer = new byte[1024];
        var charBuffer = new char[1024];
        var decoder = Encoding.UTF8.GetDecoder();
        int bytesRead;

        while ((bytesRead = await reader.BaseStream.ReadAsync(buffer, 0, buffer.Length)) > 0)
        {
            var charsDecoded = decoder.GetChars(buffer, 0, bytesRead, charBuffer, 0);
            for (var i = 0; i < charsDecoded; i++)

DiffPlex

DiffPlex is Netstandard 1.0+ C# library to generate textual diffs - in addition to the core functionality WinUI, WPF, WinForms and Avalonia (via BAndysc's DiffPlex.Avalonia) controls are available. This MIT licensed library is definitely worth being aware of!


Created by Charles on 1/12/2025. Updated on 3/11/2025.

2025 January GitHub Screenshot
GitHub's front page on 1/12/2025.

Git+GitHub is currently an amazing combination. Git has incredible functionality, tooling and resources - GitHub hosts a huge number of projects, supports everything from individuals to enterprises, stars are currently one of the more notable measures of project popularity and GitHub sponsors can help support developers and projects.

For work, popularity and large collaborative open source projects Git+GitHub are an easy choice - for my personal projects I think it is time to make a change.

Here is what I have noticed about my use for personal projects over the past 5 or so years:

  • 99.9% of my work is as a single developer
  • For personal projects my git use tends to be simple - mostly development on main with an occasional branch
  • I browse code and changes on GitHub and appreciate the ReadMe.md functionality - but haven't made meaningful use of anything else
  • I am not looking for popularity/fame/stars...

And here is why I'm moving to Fossil+Chisel:

  • My current long-shot bet is that my interest in my personal code and projects outlives the current (largely friendly+happy+zero-cost-for-simple-use) incarnation of GitHub.
  • I am not fully convinced that it will be possible, practical or desirable for me to host code online in 10/20/30 years - I'm currently moving to Chisel so that my code is hosted offsite, but long-term Fossil's strong, built-in, website/forge functionality is very, very, attractive.
  • As much as possible I want to support what I love, believe in and care about, even if it is in small ways. Fossil is an interesting, long running, practical and functional developer tool that I want to support. A glance at the GitHub and Fossil homepages may give you a hint about my feelings - I want to be the Fossil homepage, not the GitHub homepage...
  • Fun and learning!

The hedge with all this is that it is easy enough to mirror from Fossil to GitHub these days - so for now I am creating mirrors on GitHub...

2025 January Fossil Screenshot
The front page of the Fossil project on 1/12/2025.

If you end up trying Chisel I think one common workflow is to import an existing Git repo - I'm not the person you want to ask about the best way to do this but basically I would point you to:

  • Fossil: Import And Export: Basics on importing and exporting.
  • How to push Fossil local repository to remote hosting - Stack Overflow: The answer with 10 steps is a good description of the workflow I used - BUT at least in Q1 2025 it looks like the key to getting this work is in the Flint bug report below.
  • Override project code - NOT working: Flint/Chisel currently has a bug where the 'Create Repository' screen gives you a critical and very helpful data entry field titled 'Override project code (Optional, but may be needed if pushing an already created repo to Chisel.)' - but it doesn't work. The workaround in the link is pretty simple, but maybe not when you are trying to figure out 'everything'.

Related Links and Notes:

My current public repos on Chisel:


Created and Updated by Charles on 1/20/2025.

The Pointless Waymarks Cloud Backup and Pointless Waymarks PowerShell Runner have been running happily on my main computer for a bit without me thinking about them.

2025 January Pointless Waymarks Cloud Backup Main Window before LiveCharts2
2025 January Pointless Waymarks Cloud Backup Main Window before LiveCharts2.
2025 January Power Shell Runner Job List before LiveCharts2
2025 January Power Shell Runner Job List before LiveCharts2.

I was glad that the programs had been doing their job - but I was disappointed that I couldn't verify they had done their job more quickly. The data about runs needed a better presentation - enter LiveCharts2 (on GitHub): "Simple, flexible, interactive & powerful charts, maps and gauges for .Net, LiveCharts2 can now practically run everywhere Maui, Uno Platform, Blazor-wasm, WPF, WinForms, Xamarin, Avalonia, WinUI, UWP."

The LiveCharts2 site site has galleries, code and documentation that make it quick to add simple charts. The charts are fairly new, so I'm still testing/working, but I'm happy with the first round of results!

2025 January Pointless Waymarks Cloud Backup Job List with Active Upload
2025 January Pointless Waymarks Cloud Backup Job List with Active Upload.
2025 January Pointless Waymarks PowerShell Runner Job List
2025 January Pointless Waymarks PowerShell Runner Job List.

Created and Updated by Charles on 1/12/2025.

My happy feeling of being caught up on a personal project was recently crushed when I realized that dragging a file from my Android phone onto the Pointless Waymarks CMS resulted in ... nothing.

Files on my Windows computer and files from various network shares dropped without issues into the app - and the files from the Android phone worked fine in Windows Explorer between locations - but dragging Android to a WPF app didn't work.

I quickly turned to my buddy GitHub Copilot, who has given me some nice drag-and-drop answers in the past. My buddy produced some code that looked probable - and failed first try (hard to believe that this isn't a standard behavior most people experience these days). In a bit of behavior that might prove that GitHub Copilot is fundamentally human when asked about the exception from its code, the response was to blame the (probably corrupt) incoming data!

I thrashed around for a while looking for different ideas and eventually ended up on a human answer from the depths of Stack Overflow - c# - Dropped zip file causes e.Data.GetData("FileContents") to throw an exception - Stack Overflow (as per usual be sure to read the comments on the answer - the bottom comments will save you some time).

As with many things, it is a little hard to understand why the .NET drag-and-drop abstractions don't help more in this case and leaves you mucking around with FORMATETC and binary formats.

My code based on c# - Dropped zip file causes e.Data.GetData("FileContents") to throw an exception - Stack Overflow (note that I use the GongSolutions.WPF.DragDrop in my WPF projects) can currently be found in the PointlessWaymarksTools Project:


Posts Before:
2025 January Photo Content Page Details Block - Before Update
2024 December Pointless Waymarks Feed Reader Feed Editor with Auto Mark Options
2024 December Pi Sliced Day Photos Solstice to Solstice Sunsets Video Cover Image
2024 December CMS Photo Direction Display
2024 November Saguaros Against Tanque Verde Ridge