Tech choices
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?
- The functional nature of the code makes it very difficult to read/change.
- 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
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
Tech: Node.js, Puppeteer
Why?
The generator is part of our Admin/EC system, already written in Node.js.
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