🎐

Platform Based Development

Preface

Prerequisites

Learning ethics

Introduction

What is Platform-Based Development?

Why does Platform Based Development matter to you?

Research

Ecosystem

Standards, jobs, industry, roles, …

Typical features

Auth, Authorization and SSO

Datagrids (CRUD operations)

Monitoring

Analytics and visualization

Story

FAQ

Worked examples

Console applications

Desktop applications

Cloud computing

Amazon Web Services in Action by Michael Wittig, Andreas Wittig.

Cloud Computing: Methodology, Systems, and Applications by Lizhe Wang, Rajiv
Ranjan, Jinjun Chen, and Boualem Benatallah. CRC Press.

Mobile applications

Android

Ecosystem

graph TD
  Android --> ProgrammingLanguages
  Android --> BuildingTools
  ProgrammingLanguages --> Kotlin
  ProgrammingLanguages --> Java
  ProgrammingLanguages --> C["C and C++"]
  ProgrammingLanguages --> Others
  BuildingTools --> Gradle
  Android --> ExecutableFile
  ExecutableFile --> apk
  Android --> Architecture
  Architecture --> arm
  Architecture --> x86["x86 (dead)"]

Think Android as Linux

Android operates on a modified Linux kernel, so there are certain similarities between traditional Linux environments and Android's operating system. However, there are also some crucial differences that may limit the extent to which typical Linux tasks can be performed on Android. Below are some considerations:

Similarities:

  1. Kernel: Android uses a Linux kernel with some modifications.
  1. Shell Access: With appropriate apps, you can access a Unix-like shell on Android devices.
  1. File System: Android devices use a file system structure that is similar to Linux.

Differences:

  1. User Interface: Android has a unique user interface and user experience designed for touchscreen devices.
  1. Application Framework: Android apps are typically written in Java and use the Android framework, which is not present in traditional Linux distributions.
  1. System Libraries: While Android uses some Linux libraries, it also utilizes many of its own native libraries, which are not available on Linux.
  1. Restricted Access: Android has more restricted access to system-level functionalities without rooting the device. Rooting an Android device can provide more control but comes with risks, like voiding the warranty or bricking the device.
  1. Package Management: Traditional Linux distributions use package managers (like APT, YUM, or Pacman) to install, update, and remove software. Android uses a different system, primarily focused on installing apps through the Google Play Store or other app marketplaces.

Possible Tasks:

Limitations:

Workarounds:

Rooting

  1. Get the firmware.
  1. Flash it.
  1. Flash with Magisk.

https://www.xda-developers.com/

https://en.wikipedia.org/wiki/Bootloader_unlocking

https://www.quora.com/Is-there-any-Android-phone-which-cant-be-rooted

https://twrp.me/Devices/

Official method

https://source.android.com/docs/setup/build/running

https://source.android.com/docs/core/architecture/bootloader/locking_unlocking

Flashing

Android Utility pro

Odin

Odin4

Heimdall

TWRP

Magisk

ADB

ADB, or Android Debug Bridge, lets you control Android OS via a command line interface.

https://wiki.archlinux.org/title/Android_Debug_Bridge

https://medium.com/testableapple/how-to-download-apk-from-play-store-2634c0c67620

Emulation

waydroid

anbox

Genymotion

qemu

Virtual devices with Google

Testing with real devices

Saucelabs

Browserstack

Lambatest

APK

APK file stands for Android Package, it’s the .exe equivalent of Android OS. It’s a ZIP file that contains source code & other important files that helps to run an app.

Key components of an APK file are:

Life cycle

Android Studio

Pentesting

References

"Advanced Android Application Development" by Joseph Annuzzi Jr., Lauren Darcey, & Shane Conder

"Android Programming for Beginners" by John Horton

"Android Hacker's Handbook" by Joshua J. Drake, Zach Lanier, Collin Mulliner, Pau Oliva Fora, Stephen A. Ridley, & Georg Wicherski

Ye, R. (2017). Android System Programming. Packt Publishing Ltd.

Embedded systems

Web

Story

The first photographic image uploaded to the internet. https://en.wikipedia.org/wiki/Les_Horribles_Cernettes

Les Horribles Cernettes

CGI

Browsers and its technologies

HTML, CSS and JavaScript

Communication protocols

Device APIs

WebGL

Frameworks

Browser Extensions

https://www.buildingbrowserextensions.com/

Wordpress

Web3

FAQ

Self-hosted vs Cloud

https://github.com/awesome-selfhosted/awesome-selfhosted

https://github.com/awesome-foss/awesome-sysadmin#identity-management

Backend as service

ServiceSSONumber of years in the marketLicenseIs it available through Docker, a package manager, or some easily reproducible method for setup?CommentsStorageIntegrationsWhat is the bushiness model?
Supabase
Firebase
Appwrite
Directus

Auth platform

ServiceSSONumber of years in the marketLicenseIs it available through Docker, a package manager, or some easily reproducible method for setup?CommentsIntegrationsWhat is the bushiness model?
Supabase
Firebase
Keycloack
Authentik
Authelia

Data platform

ServiceSSONumber of years in the marketLicenseIs it available through Docker, a package manager, or some easily reproducible method for setup?CommentsIntegrationsNocodeWhat is the bushiness model?
Directus
Basedash
Draxlr

Visualization and reporting platform

ServiceSSONumber of years in the marketLicenseIs it available through Docker, a package manager, or some easily reproducible method for setup?CommentsWhat is the bushiness model?
Grafana
Tableau
Chartbrew
Datasette
Evidence
Matomo
EDA

Admin panels (B2B apps - CRUDs)

ServiceSelf-descriptionSSONumber of years in the marketLicenseIs it available through Docker, a package manager, or some easily reproducible method for setup?CommentsIntegrationsData sourcesRBAC / Row-level policiesLow codeTeam-based layoutsDynamic filtersPermision levels availableWebhook/Workflows
Appsmith
Budismith
Limbas
DashibaseSupabase mainlySupabase
Dezbor
DraftbitLow-code mobile app builderSupabase mainly
ILLA
Forest Admin
Retool
Internal
JetAdmin
Laravel Nova
React Admin
Dango Admin
FlutterFlow
DronaHQLow-code mobile app builder
Frontend Zero to One
Jet Admin
Plasmic
Tooljet
Appsmith
Tooljet
Openblocks
Dashpress
Motor Admin
PocketBase
SQLPage

Platform builder

ServiceSSONumber of years in the marketLicenseIs it available through Docker, a package manager, or some easily reproducible method for setup?CommentsIntegrations
Voltapp
WeWeb
Windmill
Airplane
Superblocks

Spreadsheet-database hybrid

ServiceSSOWhen did it start?LicenseIs it available through Docker, a package manager, or some easily reproducible method for setup?CommentsIntegrationsDocumentsQuery with SQLImport CSVDatabase VewsExport databaseExcel functions
AirTable2012
Baserow2020Docker
Mathesar2021Docker
NocoDB2017GNU AFFERO GENERAL PUBLIC LICENSEDocker
Grist2020Apache License 2Docker

Automation (Workflow, Orchestrator, Integrator platform)

ServiceSSONumber of years in the marketLicenseIs it available through Docker, a package manager, or some easily reproducible method for setup?Low-codeCommentsIntegrations
Zapier
Make
n8n
Pipedream
Dagster
Prefect
Windmill
Accelerated Text
Activepieces
ActiveWorkflow
Apache Airflow
Automatisch
betanin
ChiefOnboarding
Eonza
Huginn
Kestra
Kibitzr
StackStorm
µTask

Database management

Machine learning

ServiceSSONumber of years in the marketLicenseIs it available through Docker, a package manager, or some easily reproducible method for setup?Low-codeCommentsIntegrations
Exadel CompreFace
https://www.getsiteinspector.com/

ERP

What is best way to create an application that support CRUDs, authentication, change of themes, charts and filters?

What is best way to create an GUI application that given input support an output over the web?

Gradio and Sreamlit provide an easy way to create an application that do that.

What is best to prototype and show something useful?

Computational notebooks

What is best way to create an free blog static?

Ruby, jekyllrb and Markdown

What is best way to create an Software as service?

First, try to find an service as container in docker.

https://www.smarthomebeginner.com/best-docker-containers-for-home-server/

https://github.com/appwrite/appwrite

https://supabase.com/

https://grafana.com

https://poste.io/

First, focus on your service, so, at least, you have to run on client side, use backend services.

react-admin

https://github.com/PostgREST/postgrest

Cloud

https://bytebytego.com/

Blockchain

The technical features of blockchain are cryptography & timestampted logs, decentralized newtwork consensous, and transaction script (& UTXO).

Cryptocurrency.

Token.

Initial coing offering.

Account

An account is identity capable of making transactions or holding funds and it consists of an address and a key. An address is the public aspect of the account. A key is the private part of account. Also, the blockchain provide you a seed or mnmonic phrase as backup.

Example for an account:

Wallets

💡
If you don’t own your account, that is, you can’t download your private key, public key, seed phrase, the wallet is unreliable.

Coinbase Wallet

MetaMask

TrustWallet

Ledget Nano S Plus

BlusWalelt

Exodus

Crypto.com

Talisman Wallet

Extensions

https://www.buildingbrowserextensions.com/

Keyrings

Sign your transactions

Sign your transactions offline

Ecosystems

DotSama

Polkadot

Substrate

💡
Substrate is a Software Development Kit that allows you you build blockchain application over Polkadot ecosystem

Substrate ID (also known as SS58) is the default substrate format. It is based on the Bitcoin Base-58 format and its purpose is being an unique identifier an account’s address in the Substrate ecosystem.

Smart contracts

“A smart contract is a set of promises specified in digital form, including protocols within which the parties perform on these premises.” Nick Szabo, 1996

A smart contract can be called or invoked by different entities depending on the specific use case and the blockchain platform that it's deployed on. Some common entities are Users, other smart contracts, external services (oracles), cron jobs, transaction initiatiors. When a smart contract is executed a transaction on the blockchain is realized, therefore it requires an payment of network fees (or “gas”).

💡
Gas is a measure of computational effort.

Gas limit.

Gas price.

Transaction cost.

Gas and Block limits.

💡
Miners prioritzes transactions with highers gas prices since they get to keep the transactions fees.

Extrinsics

Smart contracts is a program distributed features out-of-box

RPC

There are different ways to execute remote procedure calls. For instance, you might have a new task that necessitates processing, which isn't appropriate to conduct on the client-side. Options for this include traditional cloud, on-premise servers, and the subject of our discussion, smart contracts. While traditional cloud and on-premise servers are suitable for typical tasks, smart contracts provide immutability, fault-tolerance, and trustworthiness through cryptography and blockchain. These attributes are difficult to replicate in traditional development methodologies. However, it's worth noting that the initial methods are generally quicker.

Escrow

An escrow is a temporary smart contract set to execute an exchange when both parties agree. Instead of viewing the smart contract as a static program awaiting new messages, we deploy a smart contract solely intended to carry out an operation every time that both parties start an agreement.

Fungible tokens

Non Fungible tokens

Gaming

DeFi

Exercises

  1. Logic. Mathematics. Code. Automatic Verification such as Lean Proven or Frama-C.
  1. Languages in Anki.

Projects

https://hackmd.io/@0Lgb_JIZT3aadTpO3ZlmRQ/BJ1Rgxarn?utm_source=preview-mode&utm_medium=rec

Gear protocol

A protocol which uses WASM.

Installation

rustup toolchain add nightly && rustup target add wasm32-unknown-unknown --toolchain nightly

Start a rust project

cargo new [name] --lib

Compile your project

cargo build  --release

Test your project

cargo test --release

Summary

FAQ

Reference Notes

https://blog.mollywhite.net/blockchain/

https://web3isgoinggreat.com/

Blockchain Revolution: How the Technology Behind Bitcoin Is Changing Money, Business, and the World

Hands-On Blockchain for Python Developers pdf

Mastering Bitcoin: Programming the Open Blockchain

EE374: Blockchain Foundations. (2023, January 16). Retrieved from https://ee374.stanford.edu/#syllabus

https://ee374.stanford.edu/blockchain-foundations.pdf

The Blockchain Developer: A Practical Guide for Designing, Implementing, Publishing, Testing, and Securing Distributed Blockchain-based Projects

https://polkadot.js.org/docs/api

http://gear.tech/

Scrapping, Robotic Process Automation and E2E Testing

https://github.com/lorien/awesome-web-scraping

https://github.com/lorien/awesome-web-scraping/blob/master/python.md

https://github.com/dhamaniasad/HeadlessBrowsers

https://dirtysalt.github.io/html/probabilistic-data-structures-for-web-analytics-and-data-mining.html

https://github.com/lorien/learning-web-scraping

https://github.com/lorien/awesome-web-scraping/blob/master/console_tools.md

https://github.com/dbohdan/structured-text-tools

Next steps

References

TODO