Journal from Kotnik

Nikola's thoughts and discoveries

An interesting thing happened in #China a few weeks ago:

An influencer who posts videos teaching people how to cook has gotten himself banned for posting a video in November about how to make egg fried rice. The reason this is controversial is because some early memoirs by PLA veterans about the North Korean war describe that Mao Zedong’s son died in Korea when he made himself some egg-fried rice and the smoke from cooking drew in American planes who bombed him to death. And this all took place on the 25th of November. The CCP has since declared that all of this is rumours made up to slander a war hero, and that he was in the base instead of the air bunker where everyone else is in order to protect vital documents. Nonetheless, among Chinese people who are anti-CCP, a lot of them keep a tradition of celebrating “Chinese Thanksgiving”, where they eat egg fried rice on the 25th of November—to give thanks and celebrate the fact that this foolish decision ensured Mao didn’t have a legitimate heir, which they think is the only reason China didn’t turn into a family dynasty like North Korea.

The influencer was banned because this was the third year in a row now that he’s posted a video about egg fried rice some time in the month of November, and the censors think that he’s dogwhistling anti-CCP sentiments. The influencer defends himself by saying that he barely even graduated middle school, he has no idea about this history until now, and that he posts daily videos, and just about every month, he does an episode about egg fried rice. So yeah, he posted about egg fried rice on three Novembers in a row, but he posts about it in June and December and March too.

Emphasis mine.

Last night I uninstalled Counter Strike 2.

After spending more than 800 hours of play time in Counter Strike Global Offensive (the previous version) I have decided to give up, and here is why. Not that I am complaining, I really had good time playing CS:GO, I don't regret it. The game was popular and well balanced and it run well at high quality setting on my gaming laptop.

And then came Counter Strike 2. Valve decided to force push update, and it removed CS:GO from my computer, even though I payed for it.

Core of the issue is that it is completely different game. It's all in pastel colours, a bit cartoonish, with different mechanics in every respect. All the muscle memory of the buy menu is going to be stuck in my brain for no reason, and that's just one example.

Then, the performance. The same gaming laptop that run CS:GO at high details now can't run Counter Strike 2 at lowest. I had to enable shadows, it's core part of the game, and it brings FPS down to 20 at times, and especially during duels. It's really annoying to die during glitch, only to find out after few seconds after the screen unfreezes. And it happened to me around 20% of times.

Finally, as the last drop in the bucket, I figured out that I might spend money for new hardware to continue playing, spend another 800 hours in the game, only for it to be removed from my computer because someone in Valve decided so. And I can't do that anymore. There are so many good games I want to play, and I don't want to wait for CS2 to become stable, life is too short to spend it on stupid ideas of some person in Valve.

Good bye Counter Strike, it was a good run.

Those few RSS subscribers are much more engaged and valuable than the many social media users who don’t read or click links.

From Why your blog still needs RSS by Paolo Amoroso (hat tip to Frank Meeuwsen).

We moved from France and brought our mobile phone numbers with us. Here's a blog post of how we are keeping them alive.

Of course, too much of on-line and off-line life is tied to that number in a SIM card. We just have to keep it active due to various services and people who could contact us.

Since I am automation geek you can already see the direction this post is going to... The first things first, we need a cheap mobile plan. We will not be actively using them for calls or messages but it has to be active and have an option to call from and to abroad. We chose Free.fr provider and their 2€ plan. So, for 2 phone numbers that totals for 4€. We have been living here in Germany for more than a year and they seem not to care we are constantly in a roaming mode. Good so far.

Next issue is actual mobile device. We needed something cheap and reliable. After some on-line research I chose Xiaomi Redmi Note 9, a device that offers free bootloader unlocking, good performance and 2 SIM slots for less than 100€ refurbished. After having created obligatory Xiaomi account and waiting for few days I unlocked its bootloader and installed LineageOS.

Still, good so far.

Finally, the last question remain, how to make this phone on all the time? Home Assistant to the rescue! Cheap Zigbee enabled socket (of which I have a few laying around at any time) made it possible to create automation to turn on charging when battery level drops below 20%, and to stop it once over 80%. Here is how it looks like:

Home Assistant battery level dashboard

Ideally, I wouldn't even have to deal with all this stuff in physical world just to receive digital information, but I am happy I had another opportunity to play with all of this.

I work fully remote and so does my wife. We share our home office which means at any moment one of us can be on a call. This is how we share that information.

I purchased cheap On-air light and glued it on the top of our printer which is conveniently located between our desks.

On-air ligths

Of course, I control it via Home Assistant. It has On/Off switch which I positioned in permanent On and plugged it into Sonoff power socket controlled via Zigbee protocol. And then I created an automation with Aqara switch to toggle the power socket state.

Switch

Finally, to make things a bit easier for me, I wrote this short program and mapped it to Start+m (m for meeting) keyboard shortcut.

#!/usr/bin/env python
import os

from requests import post


if __name__ == '__main__':
    url = 'http://HA/api/services/switch/toggle'
    token = os.getenv('HA_TOKEN', '')
    data = {'entity_id': 'switch.on_air_switch_switch'}

    headers = {
        "Authorization": "Bearer {}".format(token),
        "content-type": "application/json",
    }
    response = post(url, headers=headers, json=data)
    print(response.text)

Of course, it's possible to further automate this to turn on time of meetings based on calendar, or when webcam is turned on, etc. As with every rabbit hole, it's up to you to decide how deep you want to go.

Inspired by jlelse.blog here is a list of my default apps and services. I hope it might inspire you to share yours as well.

Here's the list:

  • 📨 Mail Client: 💻 Claws Mail / 📱 K9-Mail
  • 📮 Mail Server: Zoho and Gmail
  • 📝 Notes: Nextcloud Notes
  • 🟦 Photo Management: Google Photos
  • 📆 Calendar: Google Calender
  • 📁 Cloud File Storage: Nextcloud
  • 📖 RSS: Inoreader
  • 🙍🏻‍♂️ Contacts: Google Contacts
  • 🌐 Browser: Firefox
  • 💬 Chat: Signal, Viber, WhatsApp
  • 🔖 Bookmarks: Shaarli
  • 📑 Read It Later: Firefox Pocket
  • 📜 Word Processing: Google Docs
  • 📈 Spreadsheets: Google Docs
  • 📊 Presentations: Google Docs
  • 🛒 Shopping Lists: OurGrocieries
  • 💰 Personal Finance: YNAB, Google Sheets
  • 📰 News: France24, Google News
  • 🎵 Music: Deezer
  • 🎤 Podcasts: AntennaPod
  • 🔐 Password Management: Bitwarden with Vaultwarden
  • 🧑‍💻 Code Editor: Sublime Text
  • 🔑 VPN: WireGuard
  • 👥 Social Media: Mastodon

I am happy to inform you that Blacklight privacy inspector reports 0 trackers and cookies on this blog.

That is all, thank you for your attention.

I am new owner of PineBuds Pro, and here you can find my short review after a week (or so) of usage.

PinePubs Pro

TLDR; version: go for it, quality is high and active noise canceling works really well.

Now for positives, this is what I liked:

  • Bass level is incredible, you can tweak it via equalizer of course, but out of the box you'll be satisfied with the deep sound level even in an environment with a lot of it already present, like a train.
  • It fits ear really well. The buds come with 3 different earplugs sizes but the default ones work really well for me. They never fell out, or lost contact with my ear.
  • Active noise canceling (ANC) has two levels, and I haven't seen this anywhere else. But it really makes sense, depending on the environment you're in you do want to adjust it since ANC, like it or not, modifies the sound reaching our ears.
  • They are open firmware capable. This means you can enjoy support down the road even if Pine64, the manufacturer, goes bust or decides you are not important as a customer anymore. Already there are two main alternative open source firmwares available: OpenPineBuds and Little Buddy. This also means that, somewhere in the future, if you decide you want to experiment you can. Tweaking sound that is beamed in your own ear, that sound so satisfying, even as possibility.
  • It's really hard to beat this price. I got them at $69,99.

Of course, nothing is perfect, so this is what I didn't like:

  • I hate tap control on a device deep in my ear, tapping sounds awful and, for me, borderline hurtful. For example, you control ANC level with three taps on the left bud – the tap itself sounds really loud in my ear. I don't know how this could be fixed or avoided, but I really don't like it. I chose to control the volume level from my phone/computer, and not via taps.
  • Slide box that hosts (and re-charges) buds is weird, and feels very flimsy. Also, it's rather big, you can feel it in your pocket.
  • Delivery can take a while. So don't expect to have them in our inbox the next day.

I am prompted for this short update after reviewing all the drafts that I am working on.

As it is often the case, I'd get an idea about a blog post and quickly head here and draft it. It's easy, I like it. Just quickly open a page and start typing. But, it turns out that I am not so good in turning those drafts into real posts. It's not so much procrastination, one hopes, as it is general lack of time. I know, I know, it's a theme of my life in the past 7 years, but I can't help it.

So, my current thinking is to allocate dedicated time in calendar for blogging. Let's see how that turns out to be.

One thing I've been thinking about lately is what will be the effect when bot accounts migrate from #Twitter to #Mastodon instances as well.

For those new to the subject, bots (they're not really robots) are a thing in #Serbia on all social media, although it's not only Serbian problem. The government employs people to either drive the conversations away from criticizing it, or to hush down accounts using ad-hominem attacks, insults, and threats of violence.

Dealing with them is really hard, since the accounts are not automated, and there are thousands and thousands of real people constantly creating new ones and using them for as long as they can. If the Twitter collapses, and Mastodon becomes new world forum, this will be a real threat.

Mastodon moderators can not beat an army of determined and evil people constantly churning attacks. I can hardly imagine Serbian government creating own instance for bot purposes, since that would be too easy to block. And the end results I can see from this perspective is further locking down of #Fediverse, private instances that don't cooperate, or complete breakdown and migration to something else.

I might as well be completely wrong, and the existing tools to deal with malice would suffice. Time will tell.

But, in a shortwhile, it will be very interesting especially with cooperating moderators and instance owners, inability to research Twitter's data is real problem.