Use Kotlin Anko DSL and Say No to Android Layouts Written in XML

We would like to introduce an application that serves as our lunch menu.

Every day at 13:37 we eat lunch together at our cool office, catered by the lovely couple Hanna and Tadeo. The only problem we have with lunch right now is ordering. The menus for the upcoming week are provided in a Google Sheet which we have to fill out before each Friday. It’s inconvenient and requires a lot of time on everyone’s part. We already have an iOS app that gives us access to the lunch menus, so we decided to write a similar one for our Android users.

ss1 (1)ss2

Our Minimal Viable Product (MVP) is dead simple. It contains five tabs with lunch menus for each given day, a list with the number of meals ordered by the logged in user, and the total number of orders for every given meal. We’re using the Google Sheet API as our backend.

We decided to choose Kotlin as our programming language. There is some good stuff out there about learning Kotlin, so we decided to share with you a less documented but still very interesting topic — creating Android layouts in code with the help of the Kotlin Anko library. Our post assumes that you have at least a basic working knowledge of developing Android applications and have at least skimmed through the Kotlin documentation. Reading through this this piece will give you a basic knowledge of creating Android Layouts directly in code using Kotlin Anko.

Continue Reading

Using the Zephyr Add-on in Quality Assurance

Zephyr is a test management add-on for Atlasssian. It allows project teams to add testing to agile creation processes (and to planning, coding, and collaborating on software releases). Using this tool, you will be able to create test cases that could be used in further stages of development process to demonstrate the progress made on a given piece of software. It also helps with organization of work and allows us to work better and more efficiently.


Continue Reading

Dealing with Localization of Plural Nouns in iOS

In order to fully take advantage of the fact that an application is available worldwide, one must first localize it properly. Depending on the application, the region, and a host of other factors, the process of localization itself may change and require different amounts of resources.

Apple provides iOS developers with a number of different tools and utilities that significantly reduce the burden cost of localization. Using the NSLocalizedString macro together with .strings files is (and rightly so) considered a standard nowadays, but relying solely on the two can sometimes lead to suboptimal solutions. In this post I would like to demonstrate a way to handling localized strings that have to deal with plural forms.

Plural nouns

Continue Reading

Unit Testing RxJava: From Beginner to Competent User

RxJava and Reactive Programming is a very hot topic in the Java and Android worlds and we follow it very closely here at Macoscope. Unfortunately, there aren’t all that many materials available about testing reactive code. I would like to share with you our findings on the subject and guide you through the most reasonable ways of unit testing RxJava-related code. This article is aimed primarily at developers who already have a basic working knowledge of developing applications with the help of RxJava and unit testing in general. Code examples are written in Groovy and use Spock framework as a test runner.


Continue Reading

I Hate Time Tracking

I want to share something with you today: although I’m a Project Manager, I despise tracking time and keeping worklogs. Each day at the office is usually divided into numerous smaller activities with frequent context changes. Despite my utmost desire to map out the workday ahead of me, I can’t fully commit myself to that task because, by definition, Project Managers have to dispatch problems as fast as it is humanly possible.

On the other hand, I completely understand the reasoning behind tracking time and the value that proper worklogs can have for any given organization, and this post will delve into both of these issues. Hold on to your seats, this is going to get pretty wild.

Continue Reading