18 December, 2023



To add a watermark to all of the images in a directory:

1. install imagemagick

sudo apt-get install imagemagick

2.  run the following script:

counter=1; total=$(ls my_files_dir/* | wc -l); for img in my_files_dir/*; do echo "Processing file $counter of $total: $img"; convert "$img" -gravity center -pointsize 35 -fill 'maroon' -draw "text 0,0 'my watermark text'" "$img"; ((counter++)); done

16 December, 2023

09 November, 2023

 The UiState handling approach I like the most so far is the one used by the github project Dogiz :

1. there is a UiState sealed Interface + extention functions to map the Flow to the UiState
2. a UiStateWrapper that provides a unified view for every possible state

Nice, clean and efficient.

25 October, 2023

 Lo que aún me motiva a actualizar mis aplicaciones son las personas que las utilizan y piden ayuda. Nunca pensaba que esta sería la principal fuente de satisfacción cuando empezaba a escribir aplicaciones.


SpeakIt, a pesar de tener tiempo en el mercado, está viva y prospera.



06 October, 2023

Won 2nd place

 Have to urgently decide what to do with the 75$ prize. Cat-a-log won the second place, good docs and code they say!

22 September, 2023

 If Android Studio is not showing previews for markdown files, do the following:

1. Go to menu Help -> Find Action(Ctrl+Shift+A) -> Choose Boot Time Java for the IDE -> and select JetBrains Runtime with JCEF

2. Restart the IDE:

3. Now the preview should be working:

21 September, 2023

 I am starting to open source my old Android games.

The first one to bite the dust is : Crate Jump

12 August, 2023

   Cat-a-log has a new release (3.1).

- Updated to Jetpack Compose 1.5 which brought performance improvements and nice new navigation animations. 

- Some minor UI adjustments. 

- Slightly decreased apk size - by about 1Mb.

04 August, 2023

What am I using as a reference when creating a new Android project from scratch:

    My primary reference is the source code for the Kodeko course "Real-World Android by Tutorials" (https://www.kodeco.com/books/real-world-android-by-tutorials, https://github.com/kodecocodes/adva-materials/tree/editions/2.0). This course follows a CLEAN Architecture approach and maintains a clear separation of layers. The course was last updated in August 2022 and relies on XML Views and RXJava, so I’m rewriting the code using Jetpack Compose and Kotlin Flows. I also make adjustments to naming conventions and packaging. My newly created project will have one module only but some packages might be moved to their own modules later if needed.

    For the Jetpack Compose part I use another Kodeko course, Jetpack Compose by Tutorials. Again, they use Material 2 and I am rewriting some parts using Material 3.

    As a companion to the above the book ‘Clean Architecture for Android’ by Eran Boudjnah has very nice diagrams, especially in the first part of the book.

    There's another notable source from 2021 - one of the famous CommonsWare’s books Exploring Android. It is quite simple in the sense that it doesn't have any domain layer, but it provides an excellent example of a Reactive Architecture implementation in Android. Unfortunately Mark Murphy is no longer updating CommonsWare books.

    These sources are my go-to references when starting a new Android project. The official docs from Google go without saying, of course.

29 July, 2023

  Cat-a-log has a new release. 

Tech stack: Kotlin, coroutines, Flow, Jetpack Compose, Hilt, Room, DataStore, Retrofit, Moshi, Mockito. The project source is using CLEAN Architecture principles and UDF.

You can find more apps here.

17 April, 2023

 SpeakIt has a new maintenance release (6.4). Android 13 compatibility updates.