This is my blog




My new project: QRpage

I’ve started a new thing, so in the spirit of building in public, here it is: QRpage. The one-line version: it’s a QR code with a real webpage behind it. The itch I kept noticing a particular kind of search. People type “QR code car”, “QR code museum”, “QR code wedding” into Google. They think they want a QR generator....

Read more →

Branding an open-source URL shortener: Zip1.io

A few months ago I forked an open-source URL shortener, slapped a name and a domain on it, and shipped it as Zip1.io. It is now a real, free product: custom slugs, emoji URLs, password-protected links, per-link analytics, and a free REST API. Why bother? URL shorteners are the most saturated category on the internet. Bitly, TinyURL, Rebrandly and a...

Read more →

Costcam.app: snap a photo, get a price estimate

Costcam.app is a free web app that estimates the price of any object from a single photo. Point your phone, snap a picture, and a few seconds later you get a price range, a category, and a confidence rating. It is genuinely useful for valuing antiques, pricing items at garage sales, reselling things online, or just settling arguments about how...

Read more →

My first programmatic SEO play: auto-updating rankings on Leaderboarded

I just shipped my first programmatic SEO play on Leaderboarded.com. Five auto-updating “Top X” ranking pages, pulling fresh data from the GitHub API every Monday, with a “Move” column showing how each entry rose or fell since last week. What I built Five pages, all live under leaderboarded.com/rankings/github/: Top Rust Crates Top Go Libraries Top Python ML Libraries — Hugging...

Read more →

Announcing a new product: Scorejudge.com

🚀 Yet another product! At the end of 2025 I split my product into two: Keepthescore.com got a sister site called leaderboarded.com. You can read more about the reasons behind it here. Now I have created a third product: Scorejudge.com. This new product is an experiment (like everything else). What can Scorejudge do? Scorejudge allows you to create a competition...

Read more →


I'm splitting my product Keepthescore.com in two

For 4 years I’ve been building KeepTheScore.com, which evolved from a simple leaderboard maker into a hybrid serving sports scoreboards, classroom trackers, and everything in between. Today I’m splitting it in two. Sports scoreboards stay at KeepTheScore.com. Everything else moves to Leaderboarded.com. Some background: what 2025 taught me Earlier this year, I introduced a bug that broke a crucial part...

Read more →

Build Your Own Preview Deployments for GitHub Pull Requests (Without Vercel or Netlify)

Introduction Preview deployments are often touted as a major selling point of PaaS platforms like Vercel and Netlify — and for good reason. They automatically deploy every pull request to a unique, accessible URL before merging, enabling reviewers to test changes in a production-like environment without local setup. But here’s the thing: with modern AI tools like Claude Code and...

Read more →

Coding with AI finally works

Looking back, we will forget how totally overhyped AI coding was before it got useful. If you been following social media around this topic in 2023, you would have assumed that the current AI tools were already 95% of the way there towards making production-ready code. That was completely wrong back then and is still mostly wrong in 2025. However,...

Read more →

An online lacrosse scoreboard

Why are lacrosse scoreboards so hard to find? Physical scoreboards cost thousands of dollars, and most youth leagues and club teams make do with a whiteboard or a phone timer. Of course you can download dedicated scorekeeping software — but those solutions come with their own headaches: They only run on Windows They have terrible usability They’re overkill for a...

Read more →

I bought two competitor domains

Last year I bought a competitor’s domain. This year I bought another one. Two former leaderboard tools, both shut down, both now sitting in my account waiting for me to do something with them. A bit of context I started KeepTheScore.com in 2017 as a leaderboard tool — a simple way to track points, rank participants, and display live standings....

Read more →

Blue-green deployment for a bootstrapped SaaS

I am a one-man show building a web-based software product. Some quick facts about my app: The app is KeepTheScore.com, an online scoreboard app 350k visitors per month 80k registered users 17k US$ revenue per month 70 requests per second at peak-time This is a technical post looking at the infrastructure that runs my app with a focus on how...

Read more →

Find free domain names using a Python script

I made a Python script to create domain names and then check if they are free. It uses a python whois module. You can get the code here. Here’s what you need to do. 1. Checkout the code This bit is quite easy git clone git@github.com:caspii/domainfinder.git 2. Create your own building blocks This bit is also quite easy. Open the...

Read more →

Breaking Down the Costs of a Bootstrapped SaaS with $11,000 Monthly Revenue

How much does running a webapp in production actually cost? An interesting and related question is: what services does an app like this use? In this post, I will dive into both questions for the product I’m building. I’ll also provide some explanation for each service. First, a quick bit of background information. My product, Keepthescore.com, is built using Python...

Read more →

Lessons from bootstrapping my side-project to $10,000 monthly revenue

My side-project, Keepthescore.com, has finally hit the $10k monthly revenue milestone. It’s a webapp that allows you to create scoreboards and leaderboards. The 10k is gross revenue and includes MRR (subscription revenue), one-off payments and advertising revenue. As tradition demands, here is a post sharing some lessons learnt so far. I want to show that this journey is absolutely possible...

Read more →

A simple hack to improve your landing page copy with ChatGPT

It’s surprisingly hard to write the copy for your product landing page: one trap that is very easy to fall into is using your own language and not the customer’s when describing the product. What the company says: “Our Dermaglow cream is a sophisticated blend of micro-nutrients, rare botanicals, and innovative moisture-binding compounds that rejuvenate and revitalize your skin at...

Read more →

SaaS: the greatest business model of all

“SaaS is the greatest business model of all” is something I’ve heard once or twice, and I’m slowly beginning to come round to it. Why? First of all, what is a “SaaS” business model? SaaS stands for software as a service. A SaaS product is a web-based software product that people pay to use. An example of a small SaaS...

Read more →

How I chose my pricing strategy for Keepthescore.com

“Raise your prices” is the mantra of all solopreneurs. “Add expansion revenue” is its less well-known twin. I’ve just done both on my SaaS product (Keepthescore.com). 💰 What is expansion revenue? Expansion revenue, also known as upsell or cross-sell revenue, refers to the additional revenue generated from existing customers who make additional purchases beyond their initial or core purchase. It...

Read more →

If I died tomorrow, how long would my webapp keep running?

I am the sole developer of a webapp that has around 5,000 USD in monthly revenue. Yesterday I was thinking about what would happen to it if I died suddenly. I really should have some kind of succession plan. But instead of diving into that, I began to wonder how long the app would keep running for if it was...

Read more →

How to Embed a Live Leaderboard Widget on Your Website

Looking to embed a leaderboard on your website? This guide walks you through the steps of adding a live, auto-updating leaderboard widget to any web page. Looking for a leaderboard maker? Try Leaderboarded.com — a free, dedicated tool for creating and sharing leaderboards. What is a Live Leaderboard Widget? A live leaderboard widget is an embeddable website widget that displays...

Read more →

Die beste kostenlose Online-Anzeigetafel und Punktezähler

Ob du Jugendtrainer, Hobby-Streamer oder Veranstalter bist – eine professionelle Spielstandanzeige muss nicht teuer sein. In diesem Artikel zeige ich dir, wie du kostenlos eine Online-Anzeigetafel erstellen kannst, die perfekt für OBS, Streamlabs und Live-Events funktioniert. Warum eine Online-Anzeigetafel statt Hardware? Traditionelle Anzeigetafeln kosten schnell mehrere tausend Euro. Moderne Online-Punktezähler bieten dieselben Funktionen – komplett kostenlos und ohne Installation. Du...

Read more →

Online Rangliste erstellen: Die beste Software für Teams und Wettbewerbe

Ranglisten motivieren – ob im Verkaufsteam, im Klassenzimmer oder bei Firmenwettbewerben. Aber niemand will langweilige Excel-Tabellen, die keiner ansieht. In diesem Artikel zeige ich dir, wie du in 2 Minuten eine motivierende Online-Rangliste erstellen kannst, die dein Team wirklich nutzen wird. Was ist eine Online-Rangliste? Eine Online-Rangliste (englisch: Leaderboard) ist eine digitale Bestenliste, die Teilnehmer nach Punkten sortiert und sich...

Read more →

How to Build a SaaS With Python: A Solo Founder's Guide

I am a one-man show building my own software product. It currently has 11,000 registered users and revenue of around 1,500 USD per month. In this post I go into the reasons why I chose Python to build it. UPDATE (November 2023): my product is now making 10,000 USD per month and has 47,000 registered users! But first, what is...

Read more →

12 months into building my online business

I’m Caspar. I quit my job last year to build and market my own online product. Here’s the story of why I got started and how. Now it’s time for a retrospective, to reveal some numbers, go through some highlights and lowlights, and peer into the future. I’ll try and do this every 12 months. 1. Going solo First off,...

Read more →

Radical transparency: all of my metrics are now publicly available

After a lot of overthinking I have decided to make all of my metrics public on a single dashboard. The newly created dashboard shows revenue, engagement and signups for Keepthescore.com. Click here to see the dashboard. To be clear, this is less radical that it actually sounds. Others have been taken this path before such as Buffer.com or Ghost.org. Why...

Read more →

Hiding Arnold Schwarzenegger in my product to help the Ukraine

Yesterday I watched Arnold Schwarzenegger’s video, “A message to the Russian people”, and boy, is it good. I think it’s a masterclass in communication. He respects his intended Russian audience, builds empathy with some anecdotes and then delivers a crisp and simple message. He intersperses it with well-chosen footage of the crisis and makes it crystal clear who is to...

Read more →


Learning to code a SaaS? Don't use a Javascript framework

This post is aimed at people who want to learn to code — with the explicit aim of creating their own SaaS product. It covers the purely technical aspects (not marketing nor product development). I’ve spent the last 5 years building a software product and want to share my learnings. The tl;dr version is: go old-school whenever you can. Don’t...

Read more →

An expensive mistake — a short CTO war story

This story was recounted to me many years ago by the CTO of a startup. He himself was responsible for this error which cost the company tens of thousands of USD. The startup built an online multiplayer game. Users had to register and all registered users were represented by the same type of animal within the game. Let’s say that...

Read more →

Creating a SaaS without a login: a cheat code?

I’ve launched 2 successful web products (and many unsuccessful ones) that did not have a login. The product that I’m currently working on (keepthescore.com) has monthly revenue of 2000 USD and has been online for 4 years – and I’ve only just added a user login. Update (November 2024): The numbers have changed since this post was written. The app...

Read more →

Using Python and Docker to generate social images for any website

In today’s attention economy you need to stand out when you post your content on social media: that means having some kind of image as part of the package. This is easy if you’re sharing a blog post with photos (or other images) because you can setup your system to use one of these photos. But what if you’re sharing...

Read more →

How I uncovered a black-hat SEO scam

This is the story of how I accidentally discovered a sizable SEO scamming operation. Summary Some highly-ranked online tools for editing or “cleaning” HTML seem to be secretly injecting links into their output to push themselves and affiliated sites up the search engine rankings. This scam is highly successful and appears to have gone undetected so far. Tools which I...

Read more →

Why I'm quitting my job to build an online business

I’m quitting a good job to go it alone: I want to build an online product that can generate revenue. Hopefully it will become a sustainable business. UPDATE 20.05.2022: here’s a retrospective of what happened so far. Why am I doing this? I am doing this because I want to have freedom. Creative freedom, financial freedom and the ability to...

Read more →

A parable about startups and tech stacks

Once upon a time there was a young man who lived on an island where life was simple and austere. The young man dreamed of a different life, a life on the mainland, where there were shining cities, culture, exotic ideas and adventure. He spent most of his waking hours making plans about how to get to the mainland. Many...

Read more →

How to embed an online fundraising widget

This is a post demonstrating how to embed a fundraising widget from keepthescore.com on a web page. What’s quite nice is that it will update automatically without the page reloading or having to touch the embed code. Here’s what an embedded thermometer looks like: How to add your own widget First of all you need to go over to keepthescore.com...

Read more →

Google Analytics: Stop feeding the beast

Updated October 2026: I refreshed the numbers and added what has changed since 2021. The short version: the beast got bigger. The beast that is Google There was a time when Google was a small, quirky company with a single product so awesome that it blew away the competition. That time is long gone. These days Google is a gigantic...

Read more →

I deleted the production database by accident 💥

Today at around 10:45pm CET, after a couple of glasses of red wine, I deleted the production database for my online product (Leaderboarded.com, an online scoreboard app) by accident 😨. Over 300.00 scoreboards and their associated data were vaporised in an instant. By the way, I’m a one-man show, building a software product for a living. Thankfully my database is...

Read more →

Costs of running a Python webapp for 55k monthly users

How much does running a webapp in production actually cost? Maybe more than you think. keepthescore.com is a Python flask application running on DigitalOcean and Firebase. It currently has around 55k unique visitors per month, per day it’s around 3.4k. (In terms of page views, this is around 700k per month, 25k per day.) I have written a new post...

Read more →

Britain believes in a fairy-tale version of its history

This is going to be a rant, so buckle up. I went to school in England, from primary school all the way to higher education. I was taught British history the British way. I had no reason to question anything I was taught. Outside of school I thoroughly absorbed the British point of view concerning their place in the world....

Read more →

A new type of basketball scoreboard

Why are basketball scoreboards so expensive? You can easily pay over 3000 USD for a hardware scoreboard! Of course you could download a a basketball scoreboard software for your computer and then display the result on a large monitor or projector. However, the software solutions have other problems: They often only run on one type of computer (e.g. Windows) They...

Read more →

Die atemberaubende Beschissenheit von 3D Secure bei der DKB

Das 3D Secure Verfahren der DKB ist eine Frechheit. Es ist peinlich und grotesk. Es ist ein perfektes Beispiel dafür, wie Deutsche Banken kopfüber und ahnungslos ins Verderben rennen. Was ist überhaupt 3D Secure? Die DKB Webseite sagt: “3D Secure ist ein Service von Visa, Mastercard und der DKB, der Ihnen beim Online-Shopping zusätzlichen Schutz vor der unberechtigten Verwendung Ihrer...

Read more →

A simple theory of consciousness

This is a text I originally posted on Quora. If you find it marginally interesting then it has fulfilled its purpose. What is consciousness? Consciousness is an essential tool for human social interaction. It arises as a result of living in societies of individuals with complex motives. To explain, let’s begin with a fundamental assumption: Being social and cooperating have...

Read more →

Why you should work for my employer

I want to tell you about my current employer (a Berlin-based company) and why it’s very unusual as well as being an excellent place to work. I’ve been there for around 1.5 years. These opinions are my own and provided of my own volition: I’m not being paid to write this, I was not told to write this, nor is...

Read more →

Lessons from a carpet salesman

How to make a carpet Last week I had a sales experience I will never forget. It began like this: “You are about to receive some very important insights into an ancient industry. Please let me have your undivided attention.” The speaker of these words was a well-groomed alpha male who was not fond of interruptions. I was in Turkey...

Read more →

Creating an online scoreboard with Python Flask and SQLite

I recently wanted to learn something new and decided to make a webapp using Python Flask. Webapps are often under-appreciated next to their native cousins, especially when some kind of user collaboration is required. Not only are webapps an order of magnitude easier to implement, their usability can actually be superior to native apps in certain situations: collaboration paired with...

Read more →

How to quit Facebook gracefully

Facebook is really really awful. I hate Facebook. It chews up too much time. It’s watching you on every website you visit, all the time. It’s basically a massive surveillance operation. How does this work? In short, using those innocent looking 👍 buttons that are plastered all over the web. You don’t even need to interact with them. Facebook makes...

Read more →

I built a bot to track when startups die

Back in 2016, I built a Twitter bot called Deathwatch. The premise was simple: most startups die quietly. There’s no press release, no farewell blog post — they just stop tweeting one day and slowly fade from memory. Deathwatch was my attempt to make that invisible graveyard visible. The idea Silicon Valley loves the beginning of a story. The launch...

Read more →

How to Install Zsh and Oh My Zsh on Ubuntu

All the cool kids are using Z-shell (zsh) instead of bash these days. I won’t go into too much detail, other than saying: zsh has much better tab completion than bash it makes working with git much more pleasant and productive combined with Oh My Zsh you get themes, plugins and sensible defaults out of the box Here’s how to...

Read more →

A tool to present user stories

The legendary computer scientist Donald E. Knuth was in the middle of writing a series of books, when he realised that the typesetting systems of the day weren’t to his satisfaction. So he did what any tinkerer in his situation would do, which is epically procrastinate interrupt his writing and make a better system first. Eight years later his mission...

Read more →

Ubuntu development has stagnated

Last year I ranted about the state of Ubuntu and claimed that it had a general smell of decay and abandonment. This time I decided to try and find some concrete evidence to back up my claim and wondered whether mailing list activity would be a good proxy for measuring the health of the project. So I wrote a small...

Read more →