June 24, 2025
A collection of CLI programs to make the terminal more useful and less daunting.
Finally finished. Ran into error after error, so I refactored the majority of the code as best I could while being readable.
I FINALLY got grabbing the actual weather data from the user's IP address working properly together. Currently it just spits out the data since i just got it working, but at some point, it should work better.
Got the GetPublicIP and GetGeolocation functions to actually work with me, took forever to get working since environment variables wouldn't work with the officially supported Geolocation package (which I'm pretty sure is borked in newer versions of .NET since it hasn't been updated in two years).
A CLI program that gives you the weather based on your IP address. It's simple by design, giving you quick and dirty access from the terminal.
Got around to make the options I'm going to use in the final product and have the options currently throw a .NET exception that I was able to override it's styling to make it more user-friendly, since I haven't yet started working on the backend.
Getting SimpleWeatherTUI ready for wider distribution has been an interesting journey, focusing on self-contained builds to eliminate the need for external .NET runtime installations via dotnet publish.
I began by automating the build process with a build.ps1 PowerShell script. My initial focus was on Windows (x64) and macOS (x64 for Intel), leveraging dotnet publish -c Release --self-contained true
along with PublishSingleFile
and IncludeNativeLibrariesForSelfExtract
for clean, single-executable distribution. Currently, the project itself is extremely barebones, as I wanted to thoroughly test the build process across platforms before investing heavily in features, ensuring no headaches down the line.
Recognizing the shift towards ARM-based devices, my next step was to build truly compatible versions for:
Linux on ARM64: Crucial for devices like Raspberry Pis and other ARM-powered Linux machines.
Windows on ARM64: Essential for supporting the growing segment of ARM-based Windows devices.
Apple Silicon (macOS ARM64): For new M-series Macs, a native ARM64 build offers better performance and efficiency.
The build.ps1 script now meticulously handles these, publishing to distinct output directories (.\publish\linux-arm64, .\publish\win-arm64, .\publish\osx-arm64), establishing a robust, automated build system. Ensuring correct Runtime Identifiers (RIDs) and distinct --output paths for each platform was the primary challenge, resulting in neatly organized build files.
This was widely regarded as a great move by everyone.