UpSparkle Thin .NET wrapper around WinSparkle (Windows) and Sparkle (macOS). One NuGet package, two platforms. About UpSparkle gives .NET desktop apps a cross-platform auto-update UI without any platform-specific plumbing code. It ships a single netstandard2.0 NuGet package that automatically picks the right native binary at runtime. Windows — wraps WinSparkle macOS / Mac Catalyst — wraps…
libMacSparkle Thin wrapper for Sparkle updater for macOS. This library provides a C API for integrating Sparkle’s automatic update functionality into cross-platform applications (e.g., .NET, Rust, Go, etc.) on macOS. Table of Contents Overview Quickstart Step 1: Download Dependencies Step 2: Configure Info.plist Step 3: Create a Wrapper Class (C# Example) Step 4: Initialize on…
Finally, June 2026 is over. Some good things happened, even though not all of them. Here’s a quick summary of what I did in June 2026: I finished watching Invincible Season 4. It’s a great season. Viltrumites are hard to beat. I’m starting to read the comic too. Can’t wait for Season 5. I also finished the final season of The Boys . Nothing noteworthy, I’m just glad…
I just finished setting up a Windows Virtual Machine (VM), Windows 11 dev environment to be exact, using the Hyper-V Manager app. The next thing I needed to do was install some packages using the winget package manager, starting with the git binary. The installation should be as simple as typing the following command and pressing Enter . winget install Git . Git But it didn’t work as…
This morning, I needed to update some articles on my site. This site uses Hugo and is hosted on Netlify. After I finished my edits, committed them to my Git repository, and pushed the changes, the website should have been updated within a few seconds. But when I checked the blog post, nothing had changed. I started wondering what I had done wrong. I hadn’t changed the build script at all.
If you’re a software engineer or database administrator working with Microsoft SQL Server, you’re probably familiar with SQL Server Management Studio , commonly known as SSMS . In this post, I’ve compiled a list of all available SSMS versions that you can download directly from Microsoft’s servers. You may need a specific version for compatibility or testing purposes, and that’s perfectly…
If you’ve ever done software development for small businesses, you’re probably familiar with Microsoft SQL Server Express. SQL Server Express is a free edition of SQL Server, ideal for development and production use in desktop, web, and small server applications. If your software requires a specific version of SQL Server Express, don’t worry. Below are the official download links for…
You might need to install an older version of SQL Server during development for various reasons. Fortunately, Microsoft still provides installers for previous versions of SQL Server. You can use the Developer Edition for development without worrying about licensing costs. SQL Server Developer is a full-featured, free edition licensed for use as a development and test database in non-production…
I have an old Windows app where I used WPF for the UI and Microsoft Access as the database. The app worked fine on my development machine, but that’s because I had Microsoft Office installed, especially Microsoft Access. However, when I deployed it to my client’s machine, it wouldn’t run. I encountered an error message similar to this: A problem was encountered while trying to…
Have you ever needed to deploy a Microsoft Access app (such as .accdb or .mdb ) to a client machine without installing the full Microsoft Access application? If so, you’ll need to ship and install the Microsoft Access Runtime package on the target PC. According to Microsoft’s website, here’s what Microsoft Access Runtime does: The Microsoft Access Runtime enables you to…
There is this old Xamarin solution I need to run before doing some migration work. It has a Windows Phone 8 project in it. I tried running it using the latest Visual Studio , but it couldn’t build the project. All I need is one quick run, so I needed to install the Visual Studio version originally used to build it, which was Visual Studio 2015. Since I needed a specific Visual Studio 2015…
One time, a client asked me to self-host an app called SerpBear, a Search Engine Position Rank Tracking App . Back then I self-hosted the SerpBear v2.0.7. The app was great but was missing a feature my client needed. So I cloned the Git repository, analyzed it, and made some changes. I was ready to deploy the modified version of SerpBear to our Linux server, and my plan was to deploy it using…
If you’re using an older version of macOS and want to access a Windows PC using the Microsoft Windows App, you may encounter compatibility issues. But don’t worry—I’ve compiled a list of the final compatible versions of the Microsoft Windows App for older systems. You can install it either manually or by using the Homebrew package manager. You can use the classic Microsoft Remote Desktop app…
So you have and old Mac, a vintage one maybe. You want to build some app for that particular Mac, but you don’t know which latest Xcode version good for your Mac. Here’s an example error message when you tried to install latest Xcode version to an unsupported Mac: Xcode can’t be installed on “Macintosh HD” because macOS version 26.2 or later is required. No need to worry…
I dedicate this page to listing all Microsoft Visual C++ Redistributable installers. You probably just installed some old software or games, only to find that they refuse to run. Sometimes, they complain about missing Visual C++ Redistributable runtimes. So, in this post, I’ve collected all available Microsoft Visual C++ Redistributable packages directly from Microsoft’s website.…
There was this old legacy Silverlight (remember it? Microsoft’s Flash?) project in production that I needed to run. It’s so old that I barely remember anything about it. I tried to run it using the latest Visual Studio , and it obviously couldn’t build it. Migration is currently out of the question, so I needed to install the Visual Studio version originally used to build this…
As part of “how I use AI manifesto” , I’ll openly share the AI system prompt I use regularly. In this post, I’ll show you how I use AI to proofread my blog posts. Full disclosure: I write my blog posts by hand. I always write in English, the most widely spoken language in the world. But I understand that I’m not a native English speaker. Even though I’m fluent…
If you just got a US phone number from Google Voice, Tello, or any other provider, you may need to call someone to make a test call. But what if you don’t want to bother anyone just to test it? Why Make a Test Call? There are several reasons to make a test call. Here are some that come to mind: Verify that Google Voice is configured correctly Confirm your microphone and speaker are working…
May 2026 just finished. A lot of things happened, and there are small victories I can celebrate. Let’s see what happened in May? I finished watching Loki on Disney Plus. Very late to the party, but I think it’s a very satisfying story. I didn’t upload a single YouTube video in May. My bad. I ended up migrating junian.net to junian.dev and abandoned the dotcom migration plan .…
I rarely open my Steam Deck these days. Not because I’m bored with it, but because there isn’t much time left for gaming after taking care of other responsibilities. That’s a little sad, honestly. This Friday night, I finally had some free time and decided to continue playing one of my favorite games. Since it had been a while, I switched to Desktop Mode and started updating my…
Sorry for taking so long to publish this monthly report. May is almost over, and I still hadn’t written it. Some stuff kept me busy, which is great, I guess? Anyway, April was fine. Not bad, but not particularly great either. I also did some restructuring for my blog. As you may have noticed, I migrated the domain from junian.net to junian.dev . I decided to abandon the original .com migration…
I have a personal mission to turn my website into an IndieWeb-friendly website. So what exactly is the IndieWeb? Here’s the official definition from indieweb.org : The IndieWeb is a people-focused alternative to the “corporate web”. We are a community of independent and personal websites based on the principles of: owning your domain and using it as your primary online identity,…
Google Antigravity is currently one of my favorite VSCode forks. It has the AI features I actually like for coding. Recently, there was a notification for the new Antigravity 2.0 update, and my instinct was to immediately update it to get the latest features and improvements. But to my surprise, Antigravity 2.0 is NOT the full IDE I’m familiar with anymore. They turned it into more of an AI agent…
AutoKams A standalone application designed to capture images from USB camera devices, such as webcams and microscopes. About AutoKams is a standalone application designed to capture images from USB camera devices, such as webcams and microscopes. It is developed using Microsoft Visual Studio with C# as the programming language. This application is powered by AForge.NET framework . Releases…
dotfiles My personal dotfiles collection. Intended to be used on the macOS system, but some parts should be able to be used on *nix-based systems. Installation Clone this repository to $HOME folder. git clone git@github.com:junian/dotfiles.git ~/.dotfiles Before using anything, install it first by typing this command:
Homebrew dotnet Install the .NET SDK side-by-side on macOS using the Homebrew package manager. How to Use If you are currently using the .NET formula from the official Homebrew Cask , you should uninstall it first. For example: brew uninstall --zap dotnet-sdk Starting from Homebrew 5.2, you first need to trust the tap:
MvvmReady Make cross-platform app MVVM-Ready. Lightweight with only one small binary/file. Installation Get MvvmReady library from NuGet. dotnet add package MvvmReady Features Command It’s a simple ICommand implementation. Here is an example:
Serial Device Emulator (SDEmu) Develop your software without the real Serial Port device through C#-Script Emulation. Works for RS-232 and RS-485 devices. A new cross-platform successor is being developed. You can visit [Termission](https://github.com/junian/termission). --> Download 📦 SerialDeviceEmulator-v1.0.4-x86.msi
SharpExifTool C# Wrapper for ExifTool by Phil Harvey. Available for Windows, macOS, and Linux. Overview SharpExifTool is a .NET library that wraps the popular exiftool command-line application, making it easier for .NET developers to work with image metadata. This package ships with the exiftool binary, so you don’t need to install exiftool separately.
Standard.Licensing Logo Standard.Licensing Easy-to-use licensing library for .NET and .NET Framework products. Installation Get Standard.Licensing from NuGet. dotnet add package Standard.Licensing Usage Create a private and public key for your product Standard.Licensing uses the Elliptic Curve Digital Signature Algorithm (ECDSA) to ensure the license cannot be altered after creation.
Termission Cross-platform Serial/TCP Terminal with Scriptable Auto-Response. About This project is the successor of my old serial-device-emulator . It’s rewritten from the ground with cross-platform mindset. Features Cross-platform: available on Windows, macOS, and Linux Manual device control Can act as Serial COM device Can act as TCP Client/Server Log everything Auto response using JS/C#…
In a C# for -loop, we’re basically just stepping through a bunch of numbers. Keep in mind that for hands you an index variable, which is actually pretty handy for other stuff. In C#, using foreach is usually the most straightforward way to loop. But if you actually need that index (like 0, 1, or 2), for is the way to go. It lets you peek at neighboring items or even mess with other lists.
Programs basically live in loops most of the time. In C#, we’ve got the foreach -loop, which comes with its own perks and a much cleaner look. This loop lets us look at every item one by one without having to mess around with an index. Since there aren’t any indexes to track, the whole thing stays way simpler. That’s a huge win for making your code easier to follow and wrap your…