Category Archives: Technology

Folderwise: Free AI-Powered Documentation Management

I’ve released Folderwise, a free, open-source framework for keeping documentation readable, current and reviewable, with help from AI agents (assistants that can read and edit your files). It works on ordinary folders of Markdown files, with Git tracking every change. Get it on GitHub →

Folderwise — Human-readable knowledge. AI-assisted upkeep. Markdown and Git underneath. Wherever you need it.

The idea is simple: knowledge should stay readable by people, easy to maintain, and useful long after the conversation that created it.

Why I built it

It’s easy to ask an AI agent a question, solve a problem, and then lose the useful answer in a chat history. It’s just as easy to write a guide and forget whether its instructions still work six months later. [Optional: one sentence about a specific time this bit you, e.g. a recovery you had to redo from scratch.]

I wanted one place for the knowledge I keep coming back to: homelab services, server inventories, recovery procedures, purchase decisions and project notes. Agents can help maintain it, and the result stays something I can read comfortably and review with confidence.

What Folderwise helps you do

  • Give every topic a home. Each knowledge folder has its own Git repository, so a topic like “home network” can evolve independently of “server inventory.”
  • Give agents useful starting context. Shared templates and project instructions help agents follow the same conventions instead of inventing a new structure every session.
  • See what needs another look. Review dates distinguish a recent edit from a recent verification, so a restore procedure you haven’t tested in a year gets flagged. The tools flag documentation that may need checking; they don’t magically verify the facts.
  • Keep changes reviewable. Git history, change records, and checks for metadata and links make it easy to see what an agent changed and why.
  • Keep growing inventories manageable. CSV-backed records can become readable Markdown tables, so a server list stays structured and still reads like documentation.
  • Use the editor you like. Your knowledge stays in plain files you can read and edit without a special application or a hosted knowledge platform.

A visual layer with Obsidian

Obsidian is an optional companion that makes these Markdown files pleasant to explore. Search helps you find a detail quickly, backlinks show which notes refer to the one you’re reading, and graph views reveal how your notes connect.

I’m also trying an Obsidian-plus-iCloud setup for reading on Mac and iPhone. Syncing depends on how you configure Obsidian and your files: Folderwise itself doesn’t currently provide an iCloud sync bridge or automatic Git commits.

Start with one useful topic

You don’t need a huge knowledge base to benefit. Pick something you regularly look up: how to restore a service, what runs on each server, or why you chose a particular setup. Write the answer down once, then give yourself and your agents a consistent way to keep it useful.

Folderwise includes the framework, templates, setup guidance and command-line tooling. Git, Python and uv (a fast Python package manager) are the foundations; using an AI agent or Obsidian is optional.

Get Folderwise for free

Visit Folderwise on GitHub →

The repository has the README, installation steps and the latest improvements. It’s free and open source under the MIT license. Try it with one topic, adapt it to the way you work, and open an issue to tell me what would make it more useful.

How to tell if your iPhone 17 has a Samsung screen

TL;DR: Some iPhone 17 Pros have a slight blue hue tint depending on who made the screen. Samsung panels are the best ones to get (serial numbers starting with G9P, G9N, or G9Q). Apple killed the old sysdiagnose method in iOS 26, but you can now use the free tool 3uTools on Windows or Mac — no jailbreak needed.


With the iPhone 17 Pro, Apple is sourcing OLED panels from different manufacturers. It’s a bit of a lottery — some phones end up with Samsung panels (considered the best), while others come with LG or BOE panels. The catch? A few non-Samsung screens show a noticeable blue tint.

The easiest way to check? Use 3uTools.

  • Runs on both Windows and Mac
  • Works perfectly on iOS 26 (as of Sept 25, 2025)
  • Doesn’t need a jailbreak
  • Spits out your hardware info in seconds, including the display’s serial prefix

Look for G9P, G9N, or G9Q in the serial number — that means you’ve got a Samsung panel.

Apple used to let us pull this info by digging into sysdiagnose logs, but they shut that down in iOS 26. Thankfully, 3uTools makes it super easy. I haven’t had the time to play with all its extra features yet, but for this one purpose alone it’s worth grabbing.

Big shoutout to the developers for keeping it free!

How to setup dual-stack IPv4 IPv6 Azure VM without a load-balancer

I wanted to document my Microsoft Azure saga in getting a public IPv6 address to work in a virtual machine without a load balancer in front of it. My needs were pretty simple and straightforward I wanted a virtual server that had a static IPv4 and IPv6 public addresses so that I can monitor my home network and other websites.

You would think this would be pretty easy, a few clicks and done? That wasn’t my experience on Azure and setting this up isn’t easy nor straightforward. Below is how to get it done, if this helps you – you can buy me a coffee or beer.

Continue reading →

Fix zfs-mount.service failing after reboot on Proxmox

In my new homelab migration to Proxmox I came across a bug that will prevent you from being able to mount all your ZFS mount points and be a pain in the ass even more if you host containers in that folder.
Continue reading →

Install proxmox on a partition instead of a full-disk

By default, installing Proxmox with ZFS during the installation process will force you to use the entire disk for the root zpool. For most installs this is good enough. However, I like to do things differently sometimes.

I have a pair of Samsung 840 Pro 256GB SSDs that I wanted to use for my new homelab that I am currently building (moving from vmware to proxmox). You may be wondering why I want to install the operating system on a partition instead of an entire disk. Several reasons:
Continue reading →

Homelab 2017 refresh

My faithful Lenovo TS440 home server has reached its peak potential as I have maxed out the 32gb memory limit of the Intel E3 v3 architecture.

My needs for more CPU power and memory is driven by the idea of hyperconvergence. Which means I use a single machine to be my router/firewall, VPN gateway, network storage as well as virtual machine host.

Those themes have been part of my home network design since 2010 or so, today’s hot technologies are focusing on containers (LXC), Docker, etc. So I need a more powerful server in order to be able to expand my playground into those technologies. The 32gb maximum on my old server is simply not enough when you have 5 different VMs that consume almost all your memory resources (windows 10 VM, OSX one and my FreeNAS one being the top users of 75%+). Continue reading →

Why certain programs launch fine on Start > Run on Windows but not from the command line

On windows, if you run a program such as Chrome.exe (Google Chrome Web Browser) via control + R (run) it will launch without a hitch as long as the browser is installed.

However, if you open the command line and you attempt to run “chrome.exe” it will complain that the executable is not found in the %PATH%

This is because Control+R also looks up the registry values within HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\

Which include all apps ever installed such as Chrome.exe, Firefox.exe, Excel.exe, Illustrator.exe, etc.

So if you are ever writing a program in your programming language of choice, using a Windows Registry check of the location (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths) for whatever.exe will be the perfect solution when that program is not in the System Environment variable %PATH%

Flashing new firmware on HP hard drives without proliant hardware

I purchased a few hard drives off ebay for Docker homelab that I am building and found a good deal on a 2TB HP Enterprise branded hard drive (basically a rebranded Seagate disk with HP stickers on them).

The disk actually is a Seagate ST32000644NS that HP calls it its own model MB2000EAMZF. Once the disks arrived and I was ready to test them I noticed a fatal flaw. Their firmware was very out of date and HP made a critical update that is mandatory for these drives to avoid them from failing due to 24/7 usage.

To my surprise although these drives are Seagate and the internals are exactly the same they run different firmwares, and Seagate’s tools or utilities will not flash or work on HP branded drives thus forcing you to grab the firmware updates from HP.

Seagate makes these firmware updates available for free and HP does as well but with one gotcha – you must run the firmware update tool in Hewlett Packard hardware or the firmware will not flash and there seems to be no workaround. Thumbs down to HP for locking down a critical firmware update to only run on HP Proliant server hardware (I have Dell but a SATA hard drive is recognized as a normal hdd on any brand computer thanks to computing standards).

Configure Webstorm to use Github Desktop for Windows git-bash

If you have installed Github Desktop on Windows, you may have noticed that the application itself comes with a “Git Shell” which is basically a linux terminal emulator running on windows and its very useful for developers or linux users that are familiar with bash.

The problem I recently encountered was trying to find the executable PATH of the git-bash.exe so that I can configure my Webstorm IDE to use it. All the documentation on the internet seems to point to C:/Program Files/Git folder but Github may have changed this as in the latest release I downloaded (v 3.3.3.0) the files reside elsewhere and I will share where to find them.
Continue reading →

Overriding Google Compute Engine hostname from getting reset

On my last post, I explained how I am experimenting with Google Compute Engine (GCE) to host my backup DNS service and my post about configuring mailjet as an exim mail relay.

I have run into a few issues on Google Compute Engine, it looks like every time the instance gets a DHCP offer the hostname of the machine will get reset to the internal hostname, overriding whatever setting you may have set… this is bad news for a server that needs to respond to DNS settings.

After a few hours of digging and testing out different approaches, including trying to setup a DHCP hook to run the “hostname” linux command I came across documentation from Google talking about “custom metadata”.