From First Release to Better Release: Confronting My Tool’s Flaws
In December 2025, I built and published a username reconnaissance tool on GitHub and PyPI. Along with that, I also shared the tragedy-cum-comedy story of how the tool was developed and finally published.
For the past month, I was away from tool development and core cybersecurity studies due to some personal reasons. But this week, I decided to revisit the project and test it again.
And that’s when reality hit π .
During testing, I was able to identify numerous problems in the tool. Obviously, these issues were not visible at the beginning because at that time, everything felt like a eureka moment.
What Should an Engineer Do When Problems Appear?
The obvious answer is:
fix them.
But engineering is not about solving all problems at once.
The real philosophy is:
"Solve one problem properly, then move to the next.
Eventually, you conquer Everest π."
Problem #1: Platform Selection
The first issue I wanted to solve was lack of flexibility.
Earlier, the tool checked usernames on all platforms by default. I wanted to give users control.
So I planned two options:
-
Check all platforms
-
Check a specific list of platforms
This was easy to implement, and I did it.
But engineers rarely stop at “easy”.
Improving the Idea
I shared this idea with DeepSeek to see if there was a better approach.
The suggestion I got was actually smarter:
When a user chooses specific platforms, the tool should display the full list of available platforms and let the user select from it.
This feature turned out to be extremely useful. Now users know exactly:
-
which platforms are supported
-
and where their username is being checked
That problem was officially solved ✅.
Publishing the Update (GitHub & PyPI)
Next step: publishing the new version.
GitHub
I already had a repository with the same tool name. I asked ChatGPT how to handle updates.
Answer was simple:
Just update the relevant files and create a new release. No need to change anything else.
GitHub release done π.
PyPI: Comedy Continues (Again)
Publishing on PyPI was… interesting.
This time it wasn’t a tragedy — more like a controlled comedy π.
I remembered some steps, did whatever I could, and then took help from ChatGPT. Within 10 minutes, a new version was uploaded to PyPI.
Of course, no deployment is complete without errors.
The Usual Bug (Again π )
While testing, I hit the familiar error:
No module named platform
I already knew the fix this time, so it was resolved in 3 minutes.
But this was not the main issue.
The Real Problem: Old Versions Getting Installed
No matter what I did, pip install userrecon kept installing the older version.
This confused me. I asked ChatGPT again and learned something new.
Important Learning
pip caches old versions by default.
Why?
-
Wheel files are cached
-
Windows sometimes doesn’t refresh executable scripts
The Fix
Two simple steps solved everything:
Now the latest version was installed properly.
Final Test: Another Machine
If you remember the conclusion of my previous blog:
“If it works on your machine, it doesn’t mean it will work everywhere.”
So I decided to test it on someone else’s laptop.
As soon as I returned to my apartment from the library, I borrowed my friend’s laptop and ran:
And… Bingo π
The latest version v1.1.0 was installed successfully π.
Final Thoughts
This experience reminded me why revisiting your own work is important.
Initial success feels great — but real engineering begins after that, when you:
-
notice flaws
-
improve usability
-
fix deployment issues
-
and test beyond your own system
I’ll continue improving the tool step by step.
One problem at a time.

Comments
Post a Comment