Six weeks ago I didn't know what PyQt6 was.
Today I have two free Windows apps live, listed on
MajorGeeks, Softpedia, SourceForge and AlternativeTo,
with over 100 downloads across both.
This is everything I learned along the way.
Who I am
I'm Josh. Self-taught developer from the UK. No CS
degree, no bootcamp, no formal training.
I learned to code by building things I actually wanted
to exist. That's still how I work.
The problem I wanted to solve
Task Manager has frustrated me for years.
It tells you something is using your CPU. It won't
tell you which core is thermal throttling, whether
your GPU is about to overheat, or which startup
program added 8 seconds to your boot time.
I wanted one clean window showing everything. So I
built it.
App 1 — PulseMonitor
PulseMonitor is a free real-time PC health monitor
for Windows. It shows:
- CPU usage per core, clock speed and temperature
- GPU load, VRAM and temperature
- RAM usage with live history graph
- Network upload and download speeds
- Drive health across all connected drives
- Process manager with End Task
- Startup manager — add and remove startup programs
- Performance history graphs for 1hr, 24hr and 7 days
- Mini gaming overlay — press Ctrl+Shift+M
App 2 — SweptPC
After shipping PulseMonitor I discovered my PC had
14GB of junk it had been hoarding silently.
SweptPC scans your system and shows exactly how much
space each category is using before deleting anything:
- Windows temp files
- Chrome, Edge and Firefox cache
- Teams and Discord cache
- Windows Update leftovers
- Thumbnail cache
- Memory dumps
Scan first, clean what you want. No surprises.
The tech stack
Both apps use the same stack:
- Python 3.11 — language I know best
- PyQt6 — desktop UI framework
- psutil — system metrics
- nvidia-smi — NVIDIA GPU data via subprocess
- WMI — AMD/Intel GPU and temperature data
- SQLite — performance history database
- PyInstaller — bundles into standalone EXE
No installer needed. Just extract the ZIP and run.
The hardest problems I solved
1. Animation destroying CPU performance
My first version gave every animated widget its own
60fps QTimer.
On a Ryzen 9 3900X with 24 cores that meant:
- 24 CoreBar widgets × 60fps
- Plus MetricCard, CircleGauge, AnimFloat timers
- Total: 1,500+ repaints per second
CPU usage hit 80%+. For a monitoring app.
The fix was a singleton AnimDriver — one shared QTimer
that all widgets register with when animating and
deregister from when done. If nothing is animating
the timer stops entirely.
CPU dropped from 80%+ to under 5% idle.
2. Cross-thread Qt signals
MonitorThread runs in a background thread. You cannot
safely pass Python objects across Qt thread boundaries.
The solution: emit a zero-argument signal from the
thread. The UI reads from a shared snapshot instead
of receiving data directly.
Took me days to figure out. Costs 5 seconds to
implement once you know.
3. Antivirus false positives
Early builds were flagged by Bitdefender because I
was using WinRing0 and LibreHardwareMonitor for
temperature data.
Solution: remove kernel drivers entirely. Use WMI
and nvidia-smi only. Clean bill of health from
every antivirus.
4. PyInstaller packaging
Getting a truly portable EXE — no Python needed,
no dependencies, just extract and run — took several
attempts.
Key lessons:
- Use --onedir not --onefile for faster startup
- Embed the icon in the spec file not the command line
- Test on a clean machine with no Python installed
- Add a crash log that writes to %APPDATA% not the temp directory
What happened after launch
I submitted both apps to software directories and
reached out to tech bloggers and YouTubers.
Results after 6 weeks:
- 27 SourceForge downloads
- 50+ MajorGeeks downloads
- 26 Softpedia downloads
- 124 GitHub clones by 63 unique developers
- 4.5/5 review on Softpedia
- 5/5 review on MajorGeeks
- Response from NetworkChuck's team (4.6M YouTube subs)
- Downloads in USA, UK, Germany and more
Not life changing numbers. But real people using
something I built from scratch.
What I'd do differently
Start marketing earlier. I spent weeks perfecting
the app before telling anyone it existed. Ship sooner,
market sooner.
Submit to directories on day one. Softpedia,
MajorGeeks and SourceForge bring consistent organic
traffic forever. The sooner you're listed the sooner
the downloads start.
Write about what you're building. Every article
brings more people than a week of social media posts.
What's next
Both apps are free and always will be. I'm planning
a freemium v2.0 of PulseMonitor with a Pro tier for
power features.
VaultSoft is my indie brand. The goal is to build a
small suite of genuinely useful free Windows tools
and eventually make it sustainable.
Links
Both apps are free and open source:
🖥️ PulseMonitor — https://vaultsoft.github.io/PulseMonitor
🧹 SweptPC — https://vaultsoft.github.io/SweptPC
Source code — https://github.com/VaultSoft
If you're self-taught and thinking about shipping
something — just start. The gap between "learning
to code" and "shipping real software" is smaller
than you think.
What questions do you have about the build?
Top comments (0)