Jay Barria never. stop. learning Writing...

The interesection of mechanical and software design thinking

As somebody who was blessed to enjoy a career in both mechanical hardware and software engineering, it’s nice to appreciate the philosophical design similarities between these domains. In hardware I learned the value of modularity and commonality. In software, achieving a high level of modularity, separation and cohesion is generally a good thing…

Calculator library built on Kotlin, compatible with Java projects. Pure Kotlin module, lightweight, very flexible.

I've been browsing around Github looking for a pure calculator library that can be plugged-in to any UI design, free from Android platform specific libraries. To my surprise, all of the calculator libraries I've seen are highly coupled android libraries, built on top of dialog fragments. The goal of this library is to be completely decoupled from any UI framework, but still can be easily plugged-in to an existing user interface design. The library uses a linear scanning approach with a linear time complexity, which makes it ideal for long-running calculations.

A multi-modular simple currency exchange app built on the principles of clean architecture design.

The main objective is to develop it using a modern architecture that is very compliant with a team development setting. * Adheres to *Clean Architecture* design principles. * Maintainable, scalable and flexible (adaptable to future growth, modifications and new requirements). * Modular code with clear separation of concerns and well defined responsibility for classes, modules/layers. Highly testable. * Eliminate frictions between teams/individuals working on a project. Promotes accountability in a collaborative way. * Uses widely recognized libraries to support the implementation of key requirements of the app

MapBox-based app using Clean Archecture principles with MVVM-based UI layer

A sample Android app that implements a MapBox map using Clean Archecture principles with MVVM design pattern. The app requirements are very basic, but its objective is not to come up with the simplest/easiest implementation. Although seemingly over-engineered (and it is for this case), its goal was to design it with a modern multi-module architecture that is very compliant with a team development setting. The app adopts reactive and functional programming techniques. The key libraries used are Dagger 2, RxJava, Retrofit and Jetpack Architecture Components.

Just Another Sorting Exercise (Kotlin)

I’ve been doing some reviewing of time and space complexity analysis to assess diferrent ways of solving a problem. I decided to look at the age old ways of sorting an array of numbers. For this exercise, I have created a Github repository at jairrab/KotlinSortingAlgorithmsExercise. The code is written in Kotlin, so it was also an opportunity for me to update plenty of code resources available on the internet to Google’s new official Android language.