Having problems completing your project or tasks? Curtis Mayfield is here to help!
Published: 2024-03-10 04:15:01

Almost any goal, large or small, can be chunked into smaller "projects". If you are anything like most of us, you sometimes find it difficult to complete a project. The zodiac signs are a complete mismatch and for _whatever reason_, it just doesn't come together.

This happened to me recently. And by recently, I mean for around a year or so. Around May of 2023, Google announced support for Passkey and I quickly rolled out a proprietary implementation over a single weekend for a large project. Drunk off my success, I decided to tackle another triviality: push notifications.

While this may seem extremely easy for some people, I'm about two decades into this "hobby", and I just couldn't get it to click. I tried several different implementations, even venturing away from my native language (PHP), in the hopes that I could get something, anything, to work.

Fortunately, I always have a dozen or more things going on at once. A fairly today is no big deal: I'll go work on a few other things and feel better about myself after I shoot some fish in a barrel. Days turned to weeks and weeks into months - sitting in my backlog was this project: push notifications.

Why couldn't I get them to work reliably? What was so difficult about doing this thing that everybody else seemed to have no problem with? Against my ethos, I'd even decided it might be worth a few dollars if I could find a good third party solution - which also spawned several other failed attempts.

Tenth time is the  charm, right? Wrong.

Instead, I finally got fed up with not having push notifications. A real world scenario happened where it was no longer me just toying in my spare time, rather, we absolutely **needed** push notifications, and _yesterday_. Turns out, a key user was having issues getting SMS and some other notifications, where they needed to be able to respond in real-time via a phone call. Push notifications were an obvious solution: their phone could even initiate the required call (or so you'd think, Chrome removing +tel links is a different post... - ended up having to solve with Twilio).

Before I stray too far off track, I'm writing this to share a very useful technique that anybody can use which helps you to complete projects. It can help you do most anything, even beyond programming, as it is just a creative exercise.

I didn't finally get push notifications to work because I read the right documentation or tutorial: I got them to work by making a directory called "curtis" and imagining that Curtis Mayfield was the 'Pusherman', here to help me send push notifications. Stay with me here, because I know this sounds outrageous. Why would a sane human do this?

This is a way to not anthropomorphize the _problem_, but instead, to manifest the solution through will and intent. It helps occupy the mind and create an integrated distraction from the drudgery. I was no longer upset I couldn't get push notifications to work: I was sad that Curtis wasn't singing.

As I plopped through various implementations (quickly landing on a successful integration with node, express, pm2 and some other magic), "Diamond in the back, sun roof top" was playing as a medley in my head. A 1972 song from Superfly was the key I needed to unlock my brain.

This isn't the first time I've done something similar, nor will it be the last. Just don't get carried away and start littering your namespaces with obscure references - keep those in the comments. Trust me, you and other people will later come to regret trying to figure out what sunRoofTop() actually does.

Do you have an unpleasant task that has been giving you difficulty? Maybe you need a way to bring back "deleted"/hidden entries from a database, for example. It sounds like a real drudgery. What if you had a Lazarus to "revive" them, instead? 

When you give your projects an identity and a purpose, no matter how small the segment may be, it can help to breathe life into them. The external concepts and ideas can assist your brain in forming meaningful connections between abstractions and legitimate purpose - carefully discerning between the two. While I did prior use the word anthropomorphize (attributing human qualities to the project), there is no real limitation - any substitution is sufficient. The overall meta of it is that you are taking two often equally intangible things and conflating them mentally. 

Production just went down? Wait until you hear about my dragon balls...