04 December, 2019

World Of Cats has a new release. Re-written totally from scratch using Kotlin, Jetpack, MVVM. Taking advantage of coroutines for non-blocking. Glide for image loading. Caching everything with Room. HTTP requests populate the local database. And UI observes the db, as per Google recommendations. Works offline like a charm. Loads instantly! No bugs! (that last one was a joke)

02 September, 2019

SpeakIt 6.1

SpeakIt has a new release. Added support for Dark Theme. Several minor Android 10 compatibility updates.

Re-written from scratch in Kotlin, using MVVM and Jetpack

21 March, 2018

How to unblock all IPs banned by fail2ban on a Digital Ocean Ubuntu 16.04 droplet

1. find the location of the fail2ban database file:

sudo fail2ban-client get dbfile  
 Current database file is:
`- /var/lib/fail2ban/fail2ban.sqlite3

2. stop the fail2ban service:

sudo service fail2ban stop

3. delete the fail2ban database file:

sudo rm /var/lib/fail2ban/fail2ban.sqlite3

4. start the fail2ban service:

sudo service fail2ban start

5. check the list of all packet filter rules in the Linux kernel:

sudo iptables -L

23 August, 2017

Deploying a Spring application as a Linux service behind nginx (Ubuntu Server 16.04)

1. Create, build and run locally the application

The application to deploy is a JPA Data with REST from the official spring docs. But, instead of the system wide gradle mentioned in the Spring documentation we'll be using the ./gradlew wrapper since this is the recommended way of doing things. The gradle wrapper is usually committed to the source control.

02 August, 2017

As from today the watchmis.com is using Google Search Product markup for its product pages. 

Here is a screen-shot of the Structured Data Testing Tool loaded with a random page from the website:

14 March, 2017

watchmis.com has always been a responsive website.  Now it also became an installable web application.

Choose 'Add to Homescreen' in Chrome and a launcher icon will be added to the Homescreen. When you click on the launcher icon the web app will run in full screen mode, very similar to a native mobile application.

How it was made:

02 March, 2017

SpeakIt version v5.1 is out (just two days after releasing v5.0).

- Added a sound recorder. 
- The UI has been rewritten.
- Latest versions of all of the third party libs.
- A bunch of maintenance fixes.

20 January, 2017

Android enums are out of fashion (again)

Back in 2011 Google removed from its Performance Tips the advice to avoid enums. Today I've been rewriting an older app and wanted to add a feature that allows you to change the EditTexts' size using a PreferenceFragmentCompat at runtime. It would have a low, medium and big setting and the sizes would be resolution independent. A low, medium and big trio is asking for an enum and apparently enums were already ok with Android SDK.

But then I decided yet to check this again.
And it turns out that nowadays using an @IntDef is the kosher way of doing things.

31 August, 2016

Amazon Watches Finder Release

watchmis.com , the Amazon Watches Finder, is having a production release today.

(Disclaimer: watchmis.com is not a 'business' project. It is using data scraped from Internet and it is more of a technical endeavor to have a production pipeline continuously tested and modified.)

Built with Django, django-bootstrap3Django Froala WYSIWYG Editor, Sendgrid. Hosted on a Digitalocean Ubuntu Droplet.

The choice of a framework for this side project was not obvious at all. I'm doing Android native development since 2009, all sorts of Java since 2006 and Java is my friend. So a framework like Play might seem a better option... until you look at the hosting, that is.

The cheapest droplet on Digitalocean costs $5/Months and it has 512 MB of RAM. The droplet can be upgraded anytime to a higher category. Exactly what a needed to start a project as unpretentious as possible while keeping the potential to grow fast.