Implementing Missing Integration Tests: Provisioners and Docker

Finishing What We Started The Vagrant WSL2 provider had a test/integration_old/todos/ folder with unimplemented tests. Two big ones: test_provisioners.ps1 and test_docker.ps1. Both just had TODO comments saying what they should test. We’d already migrated the working tests to Pester 5.x format. The old homegrown PowerShell scripts worked fine - they just weren’t using a framework. Now we needed to implement these missing tests using the same Pester patterns. Provisioners: One Monolith, Five Tests The examples/provisioners/ directory had one massive Vagrantfile testing shell, file, ansible, chef, and salt provisioners all at once. To test them individually, we needed to split them up. ...

November 22, 2025 · 5 min · Zoltan Toma

Migrating Integration Tests to Pester: A PowerShell Testing Journey

The Testing Problem The vagrant-wsl2-provider had integration tests. They worked. They ran actual Vagrant commands and verified WSL2 distributions got created properly. But they were all custom PowerShell scripts with manual error handling, inconsistent output, and no real test framework. Here’s what a typical test looked like: try { Write-Host "Test: Starting VM..." -ForegroundColor Yellow vagrant up if ($LASTEXITCODE -ne 0) { throw "vagrant up failed" } Write-Host "[PASS] VM started" -ForegroundColor Green } catch { Write-Host "[FAIL] Test failed" -ForegroundColor Red exit 1 } It worked, but it was painful to maintain. Each test file had its own error handling, cleanup logic, and output formatting. And when something failed, you got a wall of red text with no clear indication of which specific assertion broke. ...

November 22, 2025 · 9 min · Zoltan Toma

Setting Up ProtonMail with Custom Domain: A Live-Streamed Guide to Privacy Part 2

The Day After: From Phone Numbers to Email Yesterday I solved my phone number privacy problem with a 1.5 euro disposable SIM card. Today? Time to tackle the email situation. Remember when I mentioned I’d “probably just create a new Proton Mail account” because I’d used up all my aliases? Well, today’s that day. And I decided to do it live on stream. Because apparently, I like making things interesting. Black Friday Timing: Accidentally Perfect Here’s the thing - I already have a ProtonMail account. I use it for other purposes. But for my personal site (zoltantoma.com), I need something separate. Something clean. Something that won’t mix my personal correspondence with professional inquiries. ...

November 17, 2025 · 9 min · Zoltan Toma

Privacy on a Budget: Burner SIM Cards vs. Expensive Monitoring Services

The Sunday Evening Reality Check It’s Sunday evening, 10 PM. I should be in bed, browsing for some sci-fi show to watch until my partner comes over to watch something else. Instead, I’m here trying to write a blog post about a 1.5 euro security solution. Yesterday I made a bunch of test streams - didn’t save them, wasn’t planning to. Today I did my first real stream. Didn’t overthink it. Just sat down, documented yesterday’s work on the 10-hour OBS setup, then tried to write an integration test for the vagrant-wsl2-provider. ...

November 16, 2025 · 6 min · Zoltan Toma

Testing 22 WSL Distributions Live on Twitch (13 Passed, 9 Failed)

The Question Nobody Asked Which WSL distributions from the Windows Store actually work with the Vagrant WSL2 Provider? I didn’t know. And I realized - that’s a problem. The provider uses wsl --install --distribution <name> to download and install distributions directly from the Windows Store. But there are 22 distributions available, and I’d only tested Ubuntu-24.04. Time to find out what works and what doesn’t. Building the Test The goal was simple: iterate through every distribution from wsl -l -o, try to create a Vagrant environment with it, and document what fails. ...

November 16, 2025 · 7 min · Zoltan Toma

10 Hours Fighting with OBS: My Multi-Platform Streaming Setup Journey

I Just Wanted to Show My Work I’ve been working on the [vagrant-wsl2-provider]https://github.com/LeeShan87/vagrant-wsl2-provider) for a while now, and I wanted to start showing what I’ve achieved with it. Maybe make some videos about it. But here’s the thing - I’m not confident showing my face on camera anymore. And I haven’t made any videos in years. So I was thinking… what if I just stream instead? I used to have a stream a while ago, but I was just playing games on it. It was like the only thing I was able to do after a long day. This time would be different - I’d stream actual development work. ...

November 15, 2025 · 5 min · Zoltan Toma

When Your Quick Sunday Feature Takes All Day: WSL2 Multi-VM Networking

“This Should Be Quick” Famous last words. After implementing basic networking support and learning about WSL2’s shared network architecture, I wanted to make it work reliably across multiple distributions. The plan: add integration tests, support more distros (Debian, Fedora, AlmaLinux, Kali, openSUSE), and document the limitations properly. What I thought would be a quick Sunday afternoon turned into a deep dive into systemd services, DNS resolution, and why background processes in SSH are surprisingly hard. ...

November 10, 2025 · 7 min · Zoltan Toma

Why I Chose Pester Over Custom Test Scripts (And Why Now)

The Testing Journey So Far When I started this Vagrant WSL2 Provider project, I knew unit tests would be a waste of tokens. My requirements change daily. AI pair programming with Claude means rapid iteration, constant refactoring, and features that evolve as I discover what WSL2 can and can’t do. So I skipped unit tests entirely and went straight to integration tests. Simple PowerShell scripts that do the real thing: ...

November 10, 2025 · 7 min · Zoltan Toma

Vagrant WSL2 Networking: A Reality Check

Starting with High Hopes After adding Docker support, snapshots, and data disk management to the Vagrant WSL2 Provider, networking felt like the obvious next step. The goal was simple: make config.vm.network work just like it does in VirtualBox. config.vm.network "private_network", ip: "192.168.33.10" config.vm.network "forwarded_port", guest: 80, host: 8080 How hard could it be? Claude: Narrator: It was harder than expected. The VirtualBox Mental Model When you use VirtualBox, each VM gets its own network interfaces. Private networks create host-only adapters, each VM has its own IP, and everything just works. I assumed WSL2 would be similar - after all, it’s running on Hyper-V, right? ...

November 8, 2025 · 6 min · Zoltan Toma

I'm Done With Cyber (And That's Okay)

After five years managing thousands of servers in a security startup and two more years trying to build my own security SaaS, I’ve come to a realization: I’m done with cyber. Not with tech. Not with building. Just with security. And honestly? That’s okay. The Burnout Was Real Let me back up. From 2016 to 2021, I worked at a security startup. It was incredible - we built an all-in-one cybersecurity solution that protected millions of websites across thousands of servers. I led a small team developing the security agent, designed defense strategies against attack vectors, and shipped over 100 production releases. ...

November 6, 2025 · 5 min · Zoltan Toma