RSSAmplifier

Blog

SystemDotRun

Dorian Cussen's Super Blog

doridori.github.ioRSS feed ↗10 posts

Latest posts

Application-as-a-Function Thinking

TL;DR Architecting an application with a pure function at its core can be a first step towards the “functional-core imperative shell” ideal, which can simplify testing and lower an applications complexity bar. Why? Simplification. As a novel alternative to KISS , we start with a quote from The Grug Brained Developer : complexity very , very bad And for completeness: Complexity: a measure of how…

Android Architecture: Runtime Centric Thinking

For at least 7 years I have been playing with “alternative” Android architectures in a professional context. This blog post is a brief overview to an architecture I have been using for the last two production projects for which I was Android Lead and outlines a high level introduction to a production-level runtime-centric application. I will note at the start I am not attempting to persuade anyone…

Android Security: Beware of the default IV!

A quick one today. A couple of people I have spoken to recently have been unaware of the need to ensure a random IV is being used when performing AES encryption on Android. What is an IV? In cryptography, an initialization vector (IV) or starting variable (SV)[1] is a fixed-size input to a cryptographic primitive that is typically required to be random or pseudorandom. Randomization is crucial for…

Android Security: Welcome To Shell (Permissions)

Does a shell started from an application have the same permissions as a shell started via adb ? What a good question! ADB is a shell that you get on a PC with the same permissions as if you were to run a shell/terminal app on the phone itself. I came across this statement on Reddit which went against my intuition and I had a quick look into it. It was important for me so I can understand the…

Gradle: Guide to versions (+Android)

When using Gradle I always forget where to look to make sure I’m taking advantage of the latest core and android plugin versions for my project. Some of the below can be done via Android Studio but I like knowing how to do stuff without the IDE :) Core Gradle [gradle.org] View latest versions release notes [gradle.org] View docs for older Gradle versions [wikipedia] View list of Gradle versions…

Android Architecture: Introducing Pilot

An abstract application stack for Android Motivation There are some common questions that keep popping up on the interwebs around the current collective thought on Android Architecture. Some of these questions are: What approach can I use to handle my Presenters Lifecycle? How can Presenters control the flow of an application? How can I scope data within my application? What architecture could I…

Java: Bitshifting bytes

TL;DR When bitshifting a byte use a & 0xFF mask Working at the bit level in Java can be very frustrating. This is for two reasons There are no unsigned number primitives Automatic type promotion is not intuitive! Looking at type promotion, whenever you use a bitwise operator on a byte variable it is automatically promoted to an int . This means you have to write casting code such as byte b =…

Android Architecture: Introducing Dynamo

Dynamo has been superseded by Pilot Welcome, welcome. Come in, it looks mighty cold out there. The code is laying heavy across the hills, disorder rules the day and the nights are long. We yearn for a day where the suns shines forth once more. This is post #2 of my very short Android Architecture series (can two be a series?). Post #1 was a primer for this post. It contained A brief outline of the…

Android Architecture: MV?

How do the MV* ways of thinking relate to Android? Why is this now such a popular way of thinking about Android architecture? The Problem I’m a contractor and I’m often brought on to projects have long since passed their first commit. I feel like I have had a good insight how to the average dev approaches Android app architecture from this, and also from open-source projects, android blog posts,…

Android Testing: A Rough Guide

Do you have a go-to approach when writing automated tests on Android? Every project I work on has a different testing strategy, and each time I learn something new along the way. This post is a rough outline of my approaches to automated testing on Android (including past, present & future). The post serves 3 purposes: Writing stuff down always helps me think about what Im actually doing and if it…