Welcome to the 119th edition
Another week, another newsletter! I hope that you all had a great one 🤩
This week, I've continued working on Knowii. I'll tell you more in the lab section!
If you enjoy this newsletter and get value from it, please consider becoming a subscriber. You'll be able to join our community and meet like-minded people while enabling me to keep creating content. If you prefer, you can also buy one of my products on Gumroad or offer me a cup of coffee.
Alright, let's gooooo 🚀
The lab 🧪
Gareth, a friend on the Slack PKM took some time to analyze my revenue on Medium. The graph is rather interesting and helps me reiterate a point I've made before: cross-posting articles on different platforms is a valuable approach. I've published most of my article on my own domain and cross-posted those on Medium for a while, and it generated ~$100/month on average, without me doing anything specific for that platform.
What matters is setting the canonical URL to my own domain, to make sure I keep control over the search results. Other than that, it's an interesting source of income. I think there's value in providing more options for my readers. Some already have a Medium subscription and don't necessarily want one-more on their list. The main downside I see is the dilution. Some of my readers will just follow me on Medium and might miss some of my content and promotions I run from time to time...
I didn't have as much time as I wanted for Knowii, but I was able to make some more progress this week. I implemented social logins in production and a solution for usernames.
When users log in using a social provider like Google, Twitter or GitHub, we (developers) don't always have the same information available. In particular, the username is not always there. GitHub provides a "username" field, but Google does not. In their case, the email also the username, and it's not something I want for Knowii... As a community platform, I want users to be able to use their real name and/or a nickname/username. I see a lot of value in the anonymity. That's why I needed to build a little system to take care of that. Now, when users sign up using Knowii, they'll be able to pick a username:
And they'll directly see if it's still available:
I also needed a way to generate a random username so that users who log in using Google also get one (albeit temporary):
At this point, I didn't want to have a complicated multistep onboarding process. I want users to be able to dive right in, without being bored by administrative overhead. The username generation mechanism took me a lot of time to implement. I needed to write PL/SQL functions to randomly pick nouns, adjectives, and random numbers, make those long enough but not too long, etc. Finally, the implementation wasn't easy because I couldn't see the logs when something went wrong 😂
Anyway, one more step forward!
Quotes of the week
- "Do or don't, there is no try"
- "Awareness, not age, leads to wisdom" — Publius Syrus
Book of the week
Thinking and learning
Indie Hacking and bootstrapping
Vercel launched its storage solution, including PostgreSQL databases. This is a really interesting move:
Names are not so simple to handle. Take time to read this to remove wrong ideas from your mind:
Hello everyone! I'm Sébastien Dubois. I'm an author, founder, and CTO. I write books and articles about software development & IT, personal knowledge management, personal organization, and productivity. I also craft lovely digital products 🚀
If you've enjoyed this article and want to read more like this, then become a subscriber, check out my Obsidian Starter Kit, the PKM Library, my collection of books about software development and the IT Concepts Wall 🔥.
You can follow me on Twitter 🐦
If you want to discuss, then don't hesitate to join the Personal Knowledge Management community or the Software Crafters community.