MVP vs MVVM vs MVI

Short summary of this really well written article:

Pattern overview

MVP, MVVM, and MVI are some of the common patterns in Android and they can broadly be thought of as different flavours of the same core concept — abstracting logic from the UI into classes without references to Android. The main way in which they differ is how those classes accept their inputs and how they then output updates to the UI.

Generally speaking the goal is to separate concerns and have a Unidirectional Data Flow.


MVP

The defining feature of MVP is that data is communicated back to the view imperatively.


MVVM

MVVM differs from MVP is in how data is communicated back to the view. Rather than imperatively calling the view, in MVVM changes are described by data which are then observable by the view. The UI can then reactively re-compose itself based on the new data.


MVI

This is a very similar pattern to MVVM, with some important differences. In many ways it’s a merging of MVVM & Redux. MVI pre-defines a selection of events the ViewModel handles and the view publishes a stream of these events as they happen. But the major difference is communication back to the view. Whereas in MVVM there is usually a separate publisher for each piece of data, in MVI a single object defining the entire state of the view is published. Often there’s a section of MVI which follows Redux style reducing.

Remove git HEAD branch

HEAD is a pointer to a commit (usually master) so when you checkout your repository the commit which HEAD points at will be checked out. Usually you'd want it if when checking out you want a different branch or tag to be checked out.

You can take a look at what it's pointing out by issuing the following command:

And you'll probably see something like the following: origin/HEAD -> origin/master

You can delete HEAD if you don't need it (although it doesn't do any harm being there) by issuing the following command: 

Note: on github there is already an checkbox you can check under Settings > Options.

Sketch Vector Graphics (SVG) for Android

The two following medium articles are explaining the best strategy

How to export clean .svg icons with Sketch

Tips for exporting vector assets from Sketch to Android
Design best practices for Android mobile App (with SketchApp)

In a nutshell:
  • Avoid using masks - they're not supported
  • fill rule: ‘fill-rule:evenodd’ is not supported
  • transforms on path are not supported, use option Bake transforms into path
  • avoid groups
  • avoid rotations
  • Make outlines, not strokes
  • Pathfinders are your friend
  • Adobe Illustrator is the best troubleshooter
  • Combined and transformed shapes may not appear as what they seem
  • Transparencies are your friend...
  • …and gradients are not
  • Export artboards, not layers
  • Flattening shapes will solve most problems
  • If your shape has a border, use an centre border
  • Text directly are not supported - text need to be converted to curves

    Bonus
  • try out vector optimization tools, e.g.  svgo-compressor or avocado 

Jira Ticket Templates