Blog Questions Challenge

Influenced by https://kevquirk.com/blog/blog-questions-challenge based on an original idea from https://brandons-journal.com/bear-blog-questions-challenge/.

This is a meta post you will find on various blogs nowadays, anyway I find the answers so interesting when shared by other people, hence are mine.

The questions are:

  1. Why did you start blogging in the first place?
  2. What platform are you using to manage your blog and why did you choose it?
  3. Have you blogged on other platforms before?
  4. How do you write your posts? For example, in a local editing tool, or in a panel/dashboard that's part of your blog?
  5. When do you feel most inspired to write?
  6. Do you publish immediately after writing, or do you let it simmer a bit as a draft?
  7. What's your favourite post on your blog?
  8. Any future plans for your blog? Maybe a redesign, a move to another platform, or adding a new feature?1.

1. Why did you start blogging in the first place?

I wanted to share cool links to free games and free apps, in french, and mostly because I couldn't find such specialized blogs in the French speaking community.

2. What platform are you using to manage your blog and why did you choose it?

My first blog was hosted at Jeuxvideo.com, it was about free and open source video games and apps. Then I pivoted to blogotext hosted on free.fr to write about some productivity tools.

Following the hype I tried static site generators such as Hugo and Zola without much success as it was painful to feel like debugging whenever I wanted to maintain the tooling or customize my blog.

I've migrated the content of my blogotext to a WordPress hosted on OVH and that got me back into writing, for a time at least.

Nowadays I'm using WordPress managed on my Cloudron instance and hosted at Contabo on my own VPS. I like the stability of WordPress and the ease to just be able to write anywhere using any device, any browser. Without caring about the maintenance of any tooling, upgrades etc.

3. Do you publish immediately after writing, or do you let it simmer a bit as a draft?

I tend to write best when I don't overthink, yet I suffer ADHD and I have 51 blog posts in draft state, I can't help.

4. Have you blogged on other platforms before?

I've only posted on a hosted platform in the past which was jeuxvideo.com. I do not believe anymore in the longevity of platforms after exiting a few social networks and few forums and communities. I've also observed the death of platforms I had invested time into.

5. How do you write your posts? For example, in a local editing tool, or in a panel/dashboard that's part of your blog?

Right in the WordPress editor, in my browser (btw, it's Brave).

6. When do you feel most inspired to write?

When I need to escape my thoughts and surrounding. When I'm expressing a problem or rant or anxiety. Or when I have to think clearly about a topic or elaborate my answer to an existing thread.

7. What's your favourite post on your blog?

Not posts but likely the 😵‍💫 Guilty page which is about things I like too much.

8. Any future plans for your blog? Maybe a redesign, a move to another platform, or adding a new feature?

I'd like to keep the tooling minimal with HTML or plaintext. I do not like Markdown much, likely I'm a nostalgic.

Make your own universe

A good house is one you have contributed to build or improve.

A good version control system has a good UX and you are done learning it in your first day. Git is far behind.

A good static site generator should not force you to read hundred documentation page beyond HTML/CSS.

A good service or platform or social media is one you do not fear to lose access to.

A good blogging platform is not one for which you pay thousands dollars for a CSS transition effect.

A good game engine is one you understand very well and can optimize to your needs.

A good CI or build script is the one you own and maintain.

An awesome meal is one you cook.

A perfect blog post is one you write without help, without filter, without caring about comments.

Everything you will build yourself is awesome, because it is unique and not forced by anyone.

I wish you an imperfect but awesome new year!

The art of crafting and loving your own tools

I have learned one good lesson from tasting someone's else food, it's never salty enough and I always miss the good drink pairing or something else is missing. And I'll feel bad for making any critique or special request.

I have a similar feeling about apps, tools and platforms I don't maintain. Sure i can help fixing them with requests that will likely be forgotten in their backlog. Or I can pick an alternative product which will unfortunately lack features from the former or will have their own ux issues, bugs, weirdness...

In the end I'll flavor ones that focus on simplicity and which provide good documentation and support for data import/export and customizations through their API or through plugins and scripting.

Miniflux, Shaarli, Obsidian, Dropbox, Cloudron....are those kinds of apps and platforms I use that do a thing well yet I have customized to my taste, e.g of such personalizations:

  • Dropbox is automatically organized based on custom rules, all orchestrated through cron jobs.
  • Bookmarks in Shaarli are tagged automatically thanks to a plugin I've made available in my shaarli_plugins Git repository.
  • My apps hosted in Cloudron are restarted automatically on schedule if they stop responding, thanks to some cron jobs and Cloudron's API.
  • Music I download on-the-go from my mobile phone through Seeker (Soulseek client) is synced automatically to my storage and visible in my Navidrome and Subsonic clients; so I do not need Spotify. It is also orchestrated via cron jobs, using rsync and syncthing.
  • Notes I take on my Obsidian at work and at home are synced automatically thanks to Syncthing an Git on my personal Gitea server.
  • Miniflux is the tool I've extended the most as I've blogged in Reading RSS in peace with a few Miniflux Hacks, e.g:
    • organize the feed categories in Miniflux.
    • group items by author.
    • show stats about each feed.
    • highlight links I've already bookmarked in Shaarli.
    • add one-click buttons Add to Shaarli / Follow in Miniflux next to each link mentioned in those articles depending if it's some RSS feed or a random link I might want to bookmark in Shaarli.
    • Some of those recipes are available in my repo.
  • Email attachments related to our financial activity are archived in our Dropbox and renamed automatically based on their content, using OCR. The whole thing simplifies communication with our accountant and their software.
  • My monthly invoices are generated automatically from InvoiceNinja and I'm looking at a solution using only Python.
  • I'm also making my own RSS feeds from sources that lack one like https://indieblog.page/all and https://www.journee-mondiale.com/les-journees-mondiales.htm, I've shared the source code for indieblog and for journee-mondiale, both are orchestrated via cron jobs.
  • I keep building more, I'm working on my own tools to supplement or replace InvoiceNinja, Shaarli, Wallabag, Obsidian and Miniflux. The fewer apps I rely on, the more focused I become.

Relying on my own recipes, scheduling things though cron jobs and building my own platform saves me costs, improve my computer experience and make me more efficient about problem solving.

It also likely make me a bit lazier and annoying.

You can be more efficient too, and I can help if you like!

Contact me to learn how to master of your digital life.

Contabo is cheap for reasons

TLDR: In December 2023 I picked this low-cost VPS provider. I do not recommend them, and I hope this writing will save people from wasting any time or money on Contabo.

They claimed "German Quality, Always". It's neither good quality, neither always.

For the most part, from December 2023 to September 2024, I could almost live without caring too much about managing my server, whose setup is mostly delegated to Cloudron. And I had no problem using Cloudron for my web apps on this cheap VPS; my Cloudron backups were also configured in Cloudron to use Contabo Object Storage. No problem on the surface. Until Murphy's law enter the game:

  • An outage in September 2024 broke availability in Nuremberg Data center and so my backups and my Cloudron instance were unavailable. I entered panic mode because there was nothing I could see or do. Contabo offered no support because their customer portal was impacted as well and no fail-over mechanism had been put in place. That tells a lot. Fortunately this was solved after a few days.
  • Quickly after this outage resolution, I noticed too that rclone and Cloudron backups were acting weird, mostly due to the slowness or rate limiting of Contabo Object storage API. I couldn't find an explanation so I just contacted Contabo support, which fixed my problem without saying much, sadly.
  • Few weeks later still in September 2024, my DNS config on my VPS starts to cause issues, but only to the light of problems encountered in WordPress, Miniflux and Changedetection. All those issues exploded to my face in the form of timeouts or unreachable URLs. Fortunately I found this write up https://www.thomasmartens.eu/contabo-dns-lookup-timeouts/ and could just fix my default NetPlan configuration and switched from Contabo DNS to 1.1.1.1 (CloudFlare) and 9.9.9.9 (Quad9).
  • I noticed too that my object storage space was filling up constantly, causing me some anxiety. And I couldn't clean anything. The backup cleanups were also silently frequently in Cloudron as a result. In the end I couldn't find the root cause but switching to Hetzner storage instead of Contabo Object Storage fixed and made the whole process faster.

Unfortunately I went through those issues. But I could have avoided them. When one have to pick a product or service, it's better to do more research and ask around for advice.

Use ChatGPT to be brutally honest when giving you advice and saving you money and pain.

Or just visit forums and communities like Reddit;

Lessons learned

  • Some products and services are cheap for reasons: quality for free is often a scam.
  • I should have checked internet before. Be more picky, check the community forums and reviews. Avoid unneeded pain.
  • Do not put all your eggs in the same basket, i.e pick different locations and providers for your compute and data.
  • Monitor the health of your backups and storage location.
  • Plan for disaster.

Specs comparison

If you ever need to battle test your VPS, have a look at some of those VPS benchmarking scripts: https://monovm.com/blog/vps-benchmark-tools/.

I've picked the first from the list, namely bench.sh https://github.com/haydenjames/bench-scripts/blob/master/README.md#benchsh in order to compare the specs of my Gitea runner running on Hetzner vs my main Cloudron instance running at Contabo.

Here are the specs and price on paper:

Contabo VPS M SSD https://www.vpsbenchmarks.com/hosters/contabo/plans/m-ssd (deprecated plan)

  • CPU 6 cores
  • Memory 16 GB
  • Disk 600 GB (100% SSD)
  • Port 400 Mbit/s
  • Price €11.25 / month

Hetzner - CX32 https://www.vpsbenchmarks.com/hosters/hetzner/plans/cx32 (still available on Nov 13, 2024).

Both are in the same region. The amount of CPU and disk space vary, but overall there is a clear winner about performance.

-------------------- A Bench.sh Script By Teddysun -------------------
 Version            : v2024-11-11
 Usage              : wget -qO- bench.sh | bash
----------------------------------------------------------------------
 CPU Model          : AMD EPYC Processor (with IBPB)
 CPU Cores          : 6 @ 2799.996 MHz
 CPU Cache          : 512 KB
 AES-NI             : ✓ Enabled
 VM-x/AMD-V         : ✗ Disabled
 Total Disk         : 593.5 GB (53.7 GB Used)
 Total Mem          : 15.6 GB (4.9 GB Used)
 Total Swap         : 4.0 GB (268.2 MB Used)
 System uptime      : 6 days, 17 hour 31 min
 Load average       : 0.67, 0.85, 1.09
 OS                 : Ubuntu 22.04.3 LTS
 Arch               : x86_64 (64 Bit)
 Kernel             : 5.15.0-124-generic
 TCP CC             : cubic
 Virtualization     : Dedicated
 IPv4/IPv6          : ✓ Online / ✗ Offline
 Organization       : AS51167 Contabo GmbH
 Location           : Nürnberg / DE
 Region             : Bavaria
----------------------------------------------------------------------
 I/O Speed(1st run) : 131 MB/s
 I/O Speed(2nd run) : 98.0 MB/s
 I/O Speed(3rd run) : 94.4 MB/s
 I/O Speed(average) : 107.8 MB/s
----------------------------------------------------------------------
 Node Name        Upload Speed      Download Speed      Latency     
 Speedtest.net    399.41 Mbps       399.48 Mbps         11.37 ms    
 Los Angeles, US  378.05 Mbps       401.30 Mbps         155.48 ms   
 Dallas, US       390.21 Mbps       402.25 Mbps         127.98 ms   
 Montreal, CA     44.98 Mbps        400.75 Mbps         105.08 ms   
 Paris, FR        404.24 Mbps       397.38 Mbps         18.16 ms    
 Amsterdam, NL    392.33 Mbps       396.11 Mbps         23.08 ms    
 Beijing, CN      275.61 Mbps       410.68 Mbps         241.41 ms   
 Shanghai, CN     129.99 Mbps       362.16 Mbps         428.46 ms   
 Hong Kong, CN    224.22 Mbps       386.99 Mbps         284.37 ms   
 Singapore, SG    93.82 Mbps        362.53 Mbps         329.19 ms   
 Tokyo, JP        302.55 Mbps       393.36 Mbps         256.67 ms   
----------------------------------------------------------------------
 Finished in        : 5 min 43 sec
 Timestamp          : 2024-11-13 09:18:58 UTC
----------------------------------------------------------------------
-------------------- A Bench.sh Script By Teddysun -------------------
 Version            : v2024-11-11
 Usage              : wget -qO- bench.sh | bash
----------------------------------------------------------------------
 CPU Model          : Intel Xeon Processor (Skylake, IBRS, no TSX)
 CPU Cores          : 4 @ 2099.998 MHz
 CPU Cache          : 16384 KB
 AES-NI             : ✓ Enabled
 VM-x/AMD-V         : ✗ Disabled
 Total Disk         : 75.0 GB (3.5 GB Used)
 Total Mem          : 7.6 GB (632.2 MB Used)
 System uptime      : 39 days, 14 hour 22 min
 Load average       : 0.03, 0.02, 0.00
 OS                 : Ubuntu 24.04 LTS
 Arch               : x86_64 (64 Bit)
 Kernel             : 6.8.0-41-generic
 TCP CC             : cubic
 Virtualization     : Dedicated
 IPv4/IPv6          : ✓ Online / ✓ Online
 Organization       : AS24940 Hetzner Online GmbH
 Location           : Nürnberg / DE
 Region             : Bavaria
----------------------------------------------------------------------
 I/O Speed(1st run) : 846 MB/s
 I/O Speed(2nd run) : 795 MB/s
 I/O Speed(3rd run) : 929 MB/s
 I/O Speed(average) : 856.7 MB/s
----------------------------------------------------------------------
 Node Name        Upload Speed      Download Speed      Latency     
 Speedtest.net    2292.48 Mbps      2473.56 Mbps        0.66 ms     
 Los Angeles, US  605.99 Mbps       2986.01 Mbps        157.65 ms   
 Dallas, US       702.97 Mbps       3420.20 Mbps        128.18 ms   
 Montreal, CA     175.26 Mbps       937.60 Mbps         90.89 ms    
 Paris, FR        7119.88 Mbps      9681.24 Mbps        13.65 ms    
 Amsterdam, NL    4993.84 Mbps      7353.62 Mbps        10.41 ms    
 Beijing, CN      627.18 Mbps       2611.88 Mbps        187.03 ms   
 Shanghai, CN     1.34 Mbps         1791.62 Mbps        325.14 ms   
 Hong Kong, CN    352.36 Mbps       2526.89 Mbps        234.43 ms   
 Singapore, SG    181.44 Mbps       670.17 Mbps         194.45 ms   
 Tokyo, JP        313.71 Mbps       2686.38 Mbps        236.80 ms   
----------------------------------------------------------------------
 Finished in        : 5 min 48 sec
 Timestamp          : 2024-11-13 09:25:24 UTC
----------------------------------------------------------------------

Conclusion and what's next

I still have my main VPS at Contabo, however my storage and backups are with Hetzner, migrating to Hetzner should be a no brainer, thanks to the built-in quality of Cloudron.

I've also configured another VPS with Hetzner, with satisfaction, for running Gitea Actions, because there is no way I rely on GitHub.

So you know. Move away from them, unless for cheap, non business critical workflows where performance and reliability are not a concern.

Markdown: a text adventure

Seriously I wonder what is wrong with us, computer scientists and computer hobbyists. I thought I loved markdown, that I needed to keep telling the world about it, but what renders in Gitea is not rendering the same in GitHub, nor in Obsidian. I'm likely idiot, let's find out.

The guide at https://www.markdownguide.org/book/ already starts by confusing its readers, looking for simplicity, with prompting the user to pick between normal or extended syntax. The top menu also mentions hacks and tools and books. Woot ? Aren't we talking about a simple text format and about making things simpler ?

This can't be so complicated, at least I thought. Then I visited https://en.wikipedia.org/wiki/Markdown#Implementations and fallen of my chair -- note the >dramatic< tone here, but I'm only sitting in my sofa and avoiding sleep, I'm all fine.

I hope we are solving this problem. Likely, the smart people figured it out... < o> < o> https://hn.algolia.com/?dateRange=all&page=0&prefix=true&query=variant+markdown&sort=byDate&type=comment. Woot.

Damn, even on Markdown supposed to provide a simple and better source format and publishing tool than HTML, we experts can't agree. Myriad of tools and implementations each extended by a few more artisanal tools here and there, millions of hours wasted ?

They are plenty static site generators and people crafting them and enriching markdown with details to hopefully generate, well, mostly valid HTML ? Or not ? Last time I checked, only an handful of those would take care of this goal.

We could chose to go back to working with text or HTML without tools in our way. This blog post for instance is almost just text and links, nothing much I require from markdown. This likely makes this portable. No transpiling needed, no tools.

It's NOT SO HARD and still readable. This blog post also has links that do not require remembering keyboard shortcuts on Mac for [Title](...) nor combining any special key.

Markdown is like sharing a recipe, but everyone reinvents a different complicated meal.

Simple is however better.