John O’Nolan started in 2013, an open source blogging platform, and is currently (2020) doing close to $2M/y in revenues, after x years in business, currently has a team of 15 people. He did not want a “great revolutionary idea”, a billion dollar company, but a good idea that he likes, and can work on his own pace.

Its an inspiring story, but there is a critical aspect which may be easy to overlook:

Ghost is born out of being very deeply rooted in the entire “blogging industry” for many years before it actually launched. So I started out as a freelance web designer/developer and over the years found myself working mostly in WordPress. Based on what my clients wanted.

He was already a free lancer selling Wordpress, he already had clients. He simply switched from one software to another, to an existing sales channel.

He did not think of “blogging industry” and its problem in abstract, he was already working in it. He probably went on supporting his Wordpress and keeping his existing revenue, slowly switching some of them from Wordpress to Ghost.

He did not think of an idea, and then worried about how to sell it. He had a working sales channel, and he built a product he can sell.

If you think of a product you think you can sell a lot, ask yourself this question: Is there a similar product that already exists? Can you make a living taking that existing product and selling it? Or are you putting all your hopes on that “special feature”, that will suddenly make you a superstar sales man?

Table Of Content

Immobile v2


Rust: Or Type

Project Primer

Cross TimeZone Invite Rule

Link Log

Oct 2020

August 2020

July 2020

June 2020

May 2020

April 2020

March 2020

February 2020

January 2020


Books Have Read / Recommend

Product Management Books

Badass: Making Users Awesome


Five Cs of An Organisation

Success and failure of encryption

Open Source

Observer: Observability for Rust

Realm: Web Development Framework Using Rust and Elm

MartD: Server To Browser Messages

On Writing And Formats Of Written Communications

Rust Stuff

fbt: Folder Based Test-Runner

dmax: Cargo Dependency Updater

Rust feature flags

Why is diesel not compatible with async?

Making Postgres Only Diesel Code To Also Support Sqlite

Rust Git2’s Concepts

Git Hash And Build Date In Rust Build

Systray Only Native App In Rust

Software and Tools I Use Often


DNS Over HTTPS Controversy

The Patel Motel Cartel

Standalone Complex


January 2020

Word Of The Day





Nix On OSX Catalina

Postgres: WAL / Logical Decoding

Postgres: Listen-Notify



Go All The Way

SSH Commands



SHA256 vs SHA224

Pronouns Bad


Web Components

Early Return