Welcome to Witty Programming

Porting WinMTR to Avalonia. A Fifteen-Year-Old MFC Tool on Windows, macOS and Linux

September 15, 2026
19 min. read
WinMTR combines traceroute and ping in one window, and its last release is from January 2011. This is the write-up of porting it from MFC to Avalonia and .NET 10, keeping the tool and discarding the platform.
One of the most seeking features in Angular is to lazy load a component when you need it. It is a very straightforward procedure through routing that is well documented. But, what if you do not want to use the router or you want to lazy load a component programmatically through your code?
One of the most common web app patterns involves collecting data from a form and submitting it to a REST API or, the opposite, populating a form from data originating from a REST API. This pattern can easily be achieved in Alpine.js using the native javascript Fetch Api. As a bonus, I describe the fetch async version at the end of the article.
One of the most frequent requirements when writing Alpine.js components is the communication between them. There are various strategies for how to tackle this problem. This article describes the four most common patterns that help pass information between different Alpine.js components.
Vue’s primary motivation behind the introduction of Composition API was a cost-free mechanism for reusing logic between multiple components or apps. Is there a way to use that approach for Alpine.js without sacrificing its simplicity?
Older Articles