Continuous Integration and Deployment: A Developer’s Best Friends

Continuous Integration and Deployment: A Developer's Best Friends

Embrace the power of Continuous Integration and Deployment (CI/CD) in software development. Automate tests, streamline workflows, and boost collaboration with user-friendly services like CircleCI, Bitrise, GitLab, and GitHub Actions. Level up your development process today!

Read more

Android service binding fix for API 30

Android service binding fix for API 30

Android 11 (API 30) changes the way of using external app services. Using compileSdk 30 and above, without additional Manifest entry the bindService() method will always return False, even if with compileSdk 29 the app will work perfectly. I want to share solution of this problem after WAY TOO LONG time I spent on searching it…

Read more

Command Pattern in Kotlin

Command Pattern in Kotlin

The Command pattern wraps the request into a specific object that has all the information necessary to perform its task. You can think of it as the next stage of refactoring, where at first we extract the code to a separate method, and then to a separate object, taking the arguments needed to execute the request in the constructor.

Read more

Remote Logger

Remote Logger

While working on a project, I couldn’t use Android’s ‘Development Options’ - I couldn’t access the logs. If only you could send Logcat logs, e.g. via WebSocket, and then catch them on your computer… I did not find such a tool, so I wrote one and described the process in this post.

Read more

Mediator in Kotlin

Mediator in Kotlin

The Mediator’s job is to organize communication between close classes. The Mediator pattern cuts out dependencies between components. It takes over the interaction between them, becoming the main communication hub for a group of classes. There is a reverse of the controls because components are now just telling ‘what happened’ instead of telling others to ‘do something’. It can be found e.g. in the form of ViewModel in Android, where it separates UI interactions from data model changes.

Read more

Adapter Pattern in Kotlin

Adapter Pattern in Kotlin

The Adapter or Wrapper Pattern allows you to translate one interface into another, expected by the client class. It is especially useful when the adapted object comes from 3rd party library, and you do not want to make your system depending on that interface, creating the so-called anticorruption layer. Adaptee interface changes will only affect the Adapter and not the rest of the code.

Read more

IntelliJ IDEA as a LaTeX editor

IntelliJ IDEA as a LaTeX editor

IntelliJ IDEA is pretty good at handling LaTeX. I dare say that it is an even better experience than TexStudio or Texmaker, which are dedicated to this type of project. However, the strength of IntelliJ is not in its out-of-the-box capabilities, but plugins and manual configuration of the build process.

Read more