Cord cutting – The final thread

10 years ago, I cancelled my cable TV subscription and switched to internet streaming-only using the first Android TV device, Google’s Nexus Player. It was a great cost saver. I never watched live TV to begin with, as I always wanted to skip forward during ads. My new home was Netflix and having no ads was a breath of fresh air.

In the beginning, I would miss some Belgian content here and there, but by now, every major Belgian TV channel has a free app streaming live TV and on-demand content (with paid options to reduce ads or watch additional content).

My parents barely watch TV except for the news, so I suggested to make some savings and cancel their overpriced Telenet cable TV subscription. It turns out there’s only 1 problem: they like to watch the regional news channel WTV from time to time.

Streaming WTV to an Android TV device, what are the available options?

  • Android TV app:
    the Focus/WTV app is not available for Android TV.
  • Cast from phone:
    casting a stream from the Android app on your phone is not supported.
  • Cast from website:
    casting from the website is supported, but the stream hangs after a few seconds and refuses to resume.

Ideally, my parents can just use an app on the TV, it makes things less complicated.

So, what is the solution? Create a new app! 😉

A few years ago, I gave it a first try, but somehow did not succeed. Maybe I was trying to support login and on-demand content. Yesterday, I lowered the bar and thought just streaming live content would already be sufficient (it’s what my parents do now).

To my surprise, I quite quickly had a working proof of concept. I was still using the project I created a few years ago using an old flutter version. So I upgraded the flutter version and it no longer worked on my Nvidia Shield TV, but it still worked on the emulator. It does not render video anymore, only audio. I also tried out the latest flutter 3.29.2, and even though I do get image again, it’s all red.
Long story short: don’t use impeller yet for hardware-acceleration sensitive stuff like video streaming.

I would show a screenshot, but there’s nothing to see but the live stream. 🙂

Stay tuned!

CoinGeek News v0.2.13

On October 1st, a new version got released, mainly to compliant and avoid being removed from the play store! So, nothing exciting to report 😕

I’m in release mode 😎

0.2.13 - 2024-09-28 
===================
* **[chore]** maintenance update to stay compliant with play store

I still owe you the changelog for the previous release though:

0.2.12 - 2024-02-10
===================
* **[improvement]** press top banner to scroll to top

Fdupes-gui v0.2.1

In 2021, I mashed together this quick utility, a very simple gui front-end to fdupes because I needed to clean up a bunch of documents. It was also an experiment in trying out Flutter Desktop.

Last year I released it to the public on github, more as an educational tool for people wanting to see some flutter desktop app source. Because these days, I’m force to work on macOS, I also released a mac version of an app for the first time in my life. 😳

Turns out, there is 1 other person in the world, who used my app. He noticed the app wouldn’t find the fdupes exec if it was launched from the gui. It was a known shortcoming, but this bug report triggered me to make a better effort. 😉

In v0.2.1, when the exec is not found, you can locate it manually. The location is stored so that subsequent launches automatically use fdupes from the specified location.

Available for linux and macOS, windows might follow.

OnScreenClock v0.7.4f

Short version

Maintenance update to stay compliant with Google Play store.

Although functionally, nothing changed, a lot has changed under the hood, so let me know if you experience any problems.

Rant

You may have noticed a lot of updates flying by last week. Over the past few months a ton of policy violations accumulated. I postponed updating the app since I am redeveloping the app from scratch and wanted to avoid going through the whole mess of getting the app compliant and approved, basically investing time in an app that will be deprecated soon.

However, I realized that rebuilding the app would take longer than expected (after all, it is an accumulation of work over 10 years) and that it would put too much pressure on me to deliver the app soon. If I didn’t take any action, the current app would have been removed from the app store last weekend, so I decided it is better to make the app compliant and provide continuity. It took me a whole week, each day putting in hours after work, to get the app approved.

As any developer will confirm, an app store approval can be a huge struggle. Even when you fix everything, your app still gets rejected. I noticed a bug in the review process in which they give feedback for an older version of the app. They claimed I repeatedly asked for permission even if the user granted permission. I fixed the bug, but they kept rejecting for the same reason. I filed an appeal asking for clarification, they responded the exact same thing (so appeal was basically useless). Some policy fixes need several days to be picked up and acknowledged by Play store. It only seemed to move forward after these policy fixes “trickled through”. I had so many fixes to do, from changing to app bundles, changing signing, upgrading to allowed versions of billing/analytics, upgrading android target, etc that it seems the review system choked on it..

The annoying thing was: I accidentically omitted a commit for some release but that’s when the review process got into the rejection loop. A few 1000 users were experiencing a crash and the fix was ready to release, but google would fail to accept it, even though it got accepted the day before! 🙄 These days, this has a snow ball effect: because they notice my app crashes more than its peers in the same category (Utilities), Google decides it should bury your app deeper in search results, lol.

Here’s the screenshot, for your entertainment:

So, the funny thing is they caused this problem themselves and even now when the bug is fixed, it will take some time until the average crash rate is low enough and Google reinstates my reputation.

Also, for anyone struggling with rejection with the notice “Your icon does not fill the entire icon space.”: you have to specify a 512×512 icon resource, just for TV, which does not have a transparent background. But be sure that the foreground stays within the allowed bounds! Life saver 😉

Anyway, that’s it for today. I know the current app is in a bit of broken state: the overlay is blocking input on certain screens, the service is being killed after some random time (google deployed a policy change end of 2023, before that no problem).

So rebuilding the app should fix all these things 🤞 AND make it easier to add new features. 🎉

Expected: end of year.

or IOW: ETA = EOY

new app: fdupes-gui

A few years ago, I wanted to clear out the duplicates I had in my Google Drive. It’s not a trivial task as deleting files with the same filename does not cut it: I receive tons of generated pdf’s with the same filename and when time is short (or when being lazy 😉), I just save it to Google Drive as is. The inevitable consequence is: one day cleanup is needed. 😁

Anyone familiar with linux might think of the ‘fdupes‘ utility: it not simply compares the filename but, according to the manual:

comparing file sizes and MD5 signatures, followed by a byte-by-byte comparison

Excellent. Except, when you have to go through tons of documents and files, it’s not that practical. So, with my 2021 new year’s resolutions still fresh in my head, I persevered and coded a quick gui mashup.

Workflow

  • The gui presents a list of all file duplicate groups.
  • When you click on a group, you are presented with a list of all duplicates.
  • You inspect what the document is about by clicking on the filename, which opens it with the default viewer for this file type.
  • You rename one of duplicates to the desired final filename by clicking the ‘Edit’ icon.
  • You delete the renaming files using the ‘Trash’ icon.
  • The UI prevents you from deleting the last one 😉

Simple, but effective!

Release

I coded this a few years ago, but apparently never got to publishing the code, or even just a blog post. This weekend, I cleaned up the project and added the macOS platform (originally only linux was supported). I feel weird about supporting macOS, but the world is how it is: if you want to publish your app for iOS, you need to buy Apple hardware..

Find the project on github.

CoinGeek News v0.2.11

After a nice long beta period of 4 months (I forgot about it 🫢), 0.2.11 has been promoted to production. Highlight is the eternal loading state bug fix. On the technical side, I migrated crashlytics from Sentry to Firebase. You can disable reporting in the settings.

Changes since 0.2.7:

0.2.11 - 2023-03-26
===================
* fix eternal loading state + various bugfixes
* disable mark all as read button during loading
* replaced SentryLog by Firebase crashlytics
* center implicit refresh indicator + bigger text
* bump min sdk to 21 (firebase dep -> multidex)

Just in case you wonder about the changes since 0.2.5:

0.2.7 - 2023-01-25
==================
* fix utf8 html decode for titles
* fix padding on progress indicator

0.2.6 - 2023-01-22
==================
+ added setting: open in external browser

OnScreenClock v0.7.3

A small update adding an option to show the am/pm suffix when enabling the 12-hour clock.

Here is the changelog since last blog post:

v0.7.3 2023-03-31
=================
+ added am/pm suffix option

v0.7.2 2022-10-30
=================
* migrate to billing v4 api

v0.7.1 2022-10-07
=================
* fix untrusted touch blocking on android 12 and up

CoinGeek News 0.2.5

CoinGeek News is a very simple app to read the CoinGeek news in a more structured way (i.e. chronologically). The goal is to add some features like favorites, filtering on metadata, etc. The app has been in open beta since June 2021, and I had the intention to release to production only when some more value had been added. However, since I’ve already been using myself for more than 2 years now, I guess it could be useful for some other people too..

The past few weeks, I’ve been cleaning up the app and making it Play store compliant (both technical and privacy wise) so today, I can finally publish to production. 🥳

Current features under development are favorites and post tags.

Changelog
0.2.5 - 2023-01-21
==================
* url launcher fix

0.2.4 - 2023-01-20
==================
* clear cache: ask confirmation
* try to fix elusive crash on startup

0.2.3 - 2023-01-19
==================
* mark all as read: ask confirmation
* improve settings section visuals
+ settings show database stats

0.2.2 - 2023-01-18
==================
* gdpr compliant
* flutter3 upgrade
App screenshot
App screenshot