A Hero's Journey
Tuesday, November 28, 2023
Hey there Reader,
Hold on a minute. This can't be right. Am I actually writing another issue of A Hero's Journey one week after the last one???
No, that can't be.
Let's see, the last issue was published on—checks notes—July 3rd, 2023...and today is...July 10th, 2023. Huh, imagine that...
All jokes aside, it has been far too long since I last published two issues back-to-back, and it feels good to do it again. I don't want to jinx myself, but maybe I can keep this going? Guess time will tell.
Moving the publish date to Monday helps, as it means I can write these on the weekends and not have to contend with my day job at the same time. However, the big reason is that I'm getting this SaaS product (PushBrand) ready for the big 1.0 release soon. I've learned first-hand how products don't live and die on their technical quality alone but on their marketing and technical quality combined. And that brings me to the heart of today's issue...
Also, PS, there's another development screenshot of PushBrand at the bottom of this issue for my patient readers.
PushBrand's Development Lessons
I posed the question in the subject of this issue of whether it was a mistake to build the PushBrand product before figuring out how I would market it or determine its product-market fit.
And honestly, the answer to that question is yes.
The reason is simple: I've put a lot of time into building this product—roughly six months of active development over the course of a year and three months, not including the time spent on the original KolorKit in 2019 that PushBrand was based on—and I have no idea whether or not I can sell it. That's quite a bit of opportunity cost for a somewhat uncertain outcome.
There's a lot I can dive into here. I want to save most of it for another blog series to release with the launch of PushBrand; however, in this issue, I will give you a brief history of PushBrand and some of the reasons development ended up working out this way. Then I'll give you a few key takeaways.
The Origins of PushBrand: KolorKit (February – September 2019)
PushBrand began life as a humbler soul named KolorKit (Easter Egg in the last issue's screenshot). KolorKit was initially meant to be a business, but I never felt convinced it was a strong enough idea to be commercially viable (a callback to last week's issue about lacking faith in myself and my work). So instead, it became a portfolio project.
KolorKit was mainly about having an impressive project to show to potential employers to help me land a better job. For context, this was around four years ago, and I was about to start the hunt for my second job.
And in that respect, it was reasonably successful. That project gave me excellent interview content and was moderately impressive, given my experience level.
The KolorKit Refresh (March 2022 – January 2023)
Fast forward to three years after I had first started work on KolorKit, and I'm again entering a phase of feeling like it's time for a new job (I've already talked about this fairly extensively) but also felt that I didn't have enough experience to talk about to get a job that I wanted. And so I decided to dust off KolorKit.
The way I figured it: KolorKit was never really "completed" per se, just taken to a certain point before being abandoned (and only ever used, moving forward, by myself). I thought I could come in, give the app a fresh coat of paint, improve the existing API and front-end with the experience I had gained in the past few years, round out the feature set a bit, and call it a day.
With a few months of work, I figured I could both "complete" an unfinished chapter of my career (which would be immensely satisfying in itself) and have a great project to discuss in my interviews for a new job. And I could even monetize it in the future if I wanted to.
Of course, it ended up being a lot more complicated than that. It turned out that starting over from scratch was easier, only re-using a small amount of the business logic (roughly 10-15% of the code). I ended up porting the API to Firebase instead (which was a great choice, I might add) and porting the UI to a new framework (Nuxt.js) which was based on the same library as the original KolorKit (Vue.js) but was an entirely new structure.
In the end, though, it worked again. While it didn't help much in my initial interviews (since it wasn't really in a showable state until the Fall of 2022, six months after my initial interviews), it ultimately proved pretty impressive in my final job hunt period, ending with me getting my current job.
The Evolution Into PushBrand (June 2023 – Present)
After another (briefer) hiatus with limited development (as I was getting started with my new job and had less bandwidth for this project), I eventually returned to KolorKit.
Only this time, I wanted more.
This time, I wanted to not only "complete" the project but also try to get other people to use it and make a serious run at turning this into a business. But something was missing.
The original design of KolorKit was essentially this: users could define their color palette for a project, iterate on it with other users/clients, drill into things like color accessibility, show that color palette in use in a selection of mock UIs, and ultimately export the palette in a form they could use in their code.
While this was okay, I couldn't get past the nagging feeling that there wasn't enough value here to get people to pay me for it. And that if I priced the product cheaply, some might buy it, but ultimately it wouldn't be sustainable as the revenue would be too small for whatever it cost me in time or money to acquire those customers.
So, while on vacation in Tel Aviv, I decided to make a pivot that I had been mulling over for months. KolorKit would become PushBrand, and instead of being just a color palette tool, it would be a brand design tool.
I'll save the explanation of exactly what that means for another issue, though, cause this is already getting quite long.
And finally, the takeaways I promised.
The Number of Blog Platforms Is Too Damn High!!
Last week, I also promised a little missive on my blogging drama, so here we go. After I published the issue on May 11th, I set out to write the story I mentioned and did. Only, I had a hard time finding a publication to publish my story on Medium (where I have historically published).
That got me thinking about other ways to publish the story instead since it's a little depressing to publish a story only for it not to get read by anyone because it has no distribution.
Four weeks and one very deep, dark rabbit hole later, I eventually settled on publishing first on Hashnode, a blogging platform that caters to developers specifically. And I decided to make my blog on this platform my domain blog as well (it lives at https://blog.millansingh.com). Moving forward, I plan on doing my initial publishing there and then looking to platforms like Medium and HackerNoon for additional reach for those stories.
Why the switch? Well, for one, it means I'll have more stories generating SEO and domain authority for my domain, and Hashnode still feels like an early platform with room for a lot of growth. I'm hoping that I get some audience headwinds from said growth.
And honestly, it's demoralizing how I couldn't find a publication to accept my story even when I thought it was really good. The truth is that there are many reasons why they may have passed, and I'll never know. For all I know, maybe they aren't even watching new submissions and never read mine.
The main takeaway is that I should be less concerned with getting published by a publication than I am. It's one way I'm letting others dictate my feelings about my work. But learning not to get attached to rejection/acceptance is easier said than done, and I'm only human.
Here are a few highlights from last week:
PushBrand Release Status
As of publishing this issue, here are the stats on PushBrand's development:
At an average velocity of 4–5 tasks/week, and factoring in a little wiggle room, that would mean 7–9 weeks' worth of work until I'm ready to release v1.0. Obviously, this is just an estimate and is subject to change. I will include these progress updates in each issue moving forward until the launch, so you guys can stay on track with me.
I've started "living" in NYC, as in doing things I would typically do while living my everyday life: going to the grocery store and making food, going to the movies, going to yoga classes, etc. That may sound silly, but for me, it's really about getting a taste of living here and starting to integrate into this city and feel like I belong here.
Side note, I went to see the movie "No Hard Feelings" starring Jennifer Lawrence this past weekend, and it was fantastic! It's one of those rare R-rated comedy movies with just the right amount of heart to balance out the laughs, and I would highly recommend you see it if you haven't.
That's all for this week's issue. Thanks for reading, and you'll see me in your inbox again next week!
If I can ask you to do just one thing, consider sharing this newsletter with a friend or family member. Here's the link so you can pass it along: https://aherosjourney.co/.