Tech choices

miEbooks for Android

miEbooks for Android

Tech: Mainly Scala (a bit of Java)

Why?

Legacy decision: A few years ago Scala was the fastest way to get the job done. It has minimal boilerplate and makes great use of Futures and Promises.

Pros and Cons

+ Highly functional

+ Highly scalable: build highly concurrent, fault-tolerant systems

- Highly functional

- Slow compilation time

- Limited developer pool

- Steep learning curve

Problems with delivering on time?

  1. The functional nature of the code makes it very difficult to read/change.
  2. Scala is heavy with slow compilation time.

Ideally change tech to?

Kotlin. Kotlin is still a bit new (lessons learnt from Swift on iOS) and Java developers are easy to come by (unlike Scala Developers), but Kotlin offers brevity and is considered to be a much safer option than Java (think null-pointer exceptions).

Big changes necessary

Change the constant DB reads/writes to rather us a ContentProvider.

If you built your products from scratch, what would you do differently?

Get rid of Scala due to its extremely long building times and lack of developers with Scala skills.

miEbooks for Web

miEbooks for Web

Tech: Vue.js

Why?

Component-based architecture is the future of the web. Vue.js has the biggest growth, is the easiest to learn (I’m mentoring a Junior dev) and is the most concise.

Pros and Cons

+ Lightweight

+ Simple

+ Reactive components

+ Less opinionated than others

- Still early days

- Maybe too flexible

Problems with delivering on time?

Getting a PDFTron licence

How would you change your product?

Add more features (web is fast) and integrate with more external vendors.

Page number generator and summary generator

Summaries

Tech: Node.js, Puppeteer

Why?

The generator is part of our Admin/EC system, already written in Node.js.

Analytics

Analytics

Backend

Tech: Golang and Rust

Why?

Originally the backend was JVM based and written in Scala. The performance and memory usage of analytical processing had become a major issue, and Rust was chosen as a replacement, being a fast systems language. Currently, we are switching from Rust to Go mainly because it is a more popular language and will make hiring easier, while still technically capable.

Pros and Cons

Golang

+ Simple and easy to learn

+ Relatively fast execution and small memory footprint

+ Established ecosystem and lots of libraries

+ Very fast build times

- Simple and very verbose, sometimes lots of code to do simple tasks

- Time-consuming to do error handling

Frontend

Tech: Angular and VueJS using Typescript

Why?

Angular was chosen because at the time we looked at hiring a dedicated frontend developer, and Angular was the most well-known framework among candidates. We ended up not hiring a frontend dev. VueJS was later chosen for another frontend because it is being used for other projects in the company.

Pros and Cons

Angular

+ Popular framework, easy to find candidates already fluent when hiring

- Single person at ITSI (I think) knows the framework

VueJS

+ Used by many devs at ITSI

Would you change your tech choices? To what and why?

Consolidate the frontends to all use VueJS to make it easier to switch/share between projects at ITSI.

DB

Tech: Postgres and Google Cloud Platform

Why?

Postgres, because we use that everywhere. Google Cloud Platform, because it is much easier to use than AWS which we used before, and is turning out to be about 4-5 times cheaper at the moment while providing more value than AWS did. Azure was evaluated but rejected since we didn’t use a Microsoft stack at the time.

Pros and Cons

GCP

+ Much simpler and better documentation than AWS

+ Easier to use client libraries, Go is officially supported