5 minutes
How my first solo project came about - Archive Finds pt. 1
It is not hard to come across something annoying that you feel could be done in a simpler, better manner. That being said, improving on this problem, or ideally solving it can be more difficult than just identifying it. This article and its second part explore how I encountered one such issue and, in my opinion, came up with a pretty good solution. I call this “solution” Archive Finds and this is how it came about.
This part will focus more on the idea and how it came about, while the second will focus more on the technical aspects and lessons I’ve learned.
“I wish this wouldn’t take as much time”
In my teen years, I used to buy/resell vintage, archive clothing. This process involved finding undervalued clothing, buying it and then finding someone willing to pay for it more than I did. The hardest part of this process was finding these hidden gems, as this involved looking through various websites with varying degrees of accessibility and sometimes poor UX. My daily routine would be made up by me spending hours browsing through these online stores, with the hope of finding the best deals. Even if sometimes this meant just refreshing these websites over and over.
It occurred to me that this doesn’t have to be the case. What if I could be notified when a new item appears? What if I wouldn’t have to constantly switch between different websites, but instead have a single source of items to look at? Would it be easier to browse through items if the UI was tailored to my needs?
These questions formed the initial idea for this service.
Something, from nothing
With my Computer Science (CS)-based background, I realized there must be a technological way of realizing these ideas. I set off to build a search engine, collecting items from various websites and presenting them in a clean & powerful user interface. In my mind, I could always extend this core idea with additional features - such as notifications once a new items is added.
I had past experiences with creating UIs and web services, creating the interface wouldn’t be the hardest part. Collecting the items would. That is why I started with a small web scraper, built purely for myself. This very simple prototype would collect items from a single website (Yahoo Auctions) and paste them into a file. I would then read this file and show these items - their name, photos, descriptions, etc. using a simple HTML page.
When a personal tool becomes something more
I realized what I had built was quite rough around the edges - I can’t collect as many items since they are all stored in a single file and the UI doesn’t work or function the best.
This led me to improve on the website more and more:
- Instead of a single file, a database was used.
- Instead of using a heavy web scraper, the Python Scrapy library is used, a more lightweight approach that is easier to parallelize.
- Items are now taken from multiple websites.
- A simple UI with basic functionality is up and running on a hosted website, not just locally on my PC.
Using this website has already replaced the existing “process” of finding new clothes. By this point I realized I put a decent amount of effort into this service and I started being quite happy with how it worked. Sure, there are bugs and inconsistencies, but I know what they “mean” and why they happen, so it’s fine. Yeah, the UI could be better, but the website is only for my eyes, so why does it matter?
Only then did I realize others might find this useful - throughout the years I have met many resellers and other fashion enthusiasts with an interest in the same niche of fashion.
My perspective changed totally.
Make public what you think others will find useful
My understanding of the service’s quirks made me partially blind to all of its problems. For users to find this tool useful many things would need to be fixed and improved. Because of this, I no longer aimed for “good enough”, but for “as good as possible”.
A small dilemma arose though - if I make this public, I could lose my competitive advantage, in comparison to other resellers. On the other hand, this could potentially save hours of users’ time.
With time, reselling was something I did less and less. Eventually, I realized I value coming up with a solution to a real-life problem that improves on the status quo far more than a few items I might snipe up quicker than others.
Making this service public, getting feedback from both actual and potential users, and dragging this project to the finish line, all taught me more than I could have imagined. And definitely more than if I left the project in a dormant, un-published state. This taught me to open up my projects and ideas to people (whether users or developers) as much as possible. Inviting my friend Surya (Hey!) to work in the later stages gave me a different perspective, which is often lacking in one-man projects. I’m very appreciative of our collaboration.
What if I could start over?
Finally, if I could start over, I would have definitely validated this idea earlier. The reselling community (which might find this product useful) seems way less active these days than it was years ago when I had the idea for this service.
Perhaps if I had started earlier, I would have been able to test my assumptions and improve on the product, making it interesting to a wider audience. Even if this failed, I could always move on to the next idea, the next thing. I can say this thanks to the self-confidence and experience I have gained developing this service, as my first full-fledged solo-project.
Thank you for reading.