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
React Native
React
State management
Hooks
Debugging
Cross components
Deployment
FAQ
Should I prefer Hooks and Components over classes?
Yes.
Features
Theme and Layout
Internalization
Storage providers
Data providers
ML on device
Location and Maps
Camera
Gallery
Deep linking
Push notifications
It’s possible to make local notifications.
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:
- Kernel: Android uses a Linux kernel with some modifications.
- Shell Access: With appropriate apps, you can access a Unix-like shell on Android devices.
- File System: Android devices use a file system structure that is similar to Linux.
Differences:
- User Interface: Android has a unique user interface and user experience designed for touchscreen devices.
- Application Framework: Android apps are typically written in Java and use the Android framework, which is not present in traditional Linux distributions.
- System Libraries: While Android uses some Linux libraries, it also utilizes many of its own native libraries, which are not available on Linux.
- 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.
- 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:
- Running shell commands using terminal emulators.
- Using utilities and programming languages like Python, with the help of respective Android applications.
- Accessing and modifying the file system (to the extent permitted by Android's security model).
- Running Linux distributions using applications like UserLAnd or Termux, which provide a more Linux-like environment on Android devices.
Limitations:
- Installing and running traditional Linux software packages can be challenging, as they may not be compatible with Android's architecture and environment.
- System administration and networking tasks may be limited due to Android's security restrictions.
- Development environment and toolchain on Android are quite different from standard Linux distributions.
Workarounds:
- Rooting: Rooting an Android device can provide more access and control over the system, but it comes with risks and challenges.
- Using Apps: There are various apps available that simulate a Linux environment on Android, allowing for the execution of many Linux commands and the installation of some Linux software.
- Linux Deploy: With apps like Linux Deploy, you can install a full Linux distribution on your Android device, but it requires rooting in most cases.
Rooting
- Get the firmware.
- Flash it.
- 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
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:
- AndroidManifest.xml It declares the Android APIs that the application is going to use and and permissions.
- classes.dex It contains Java bytecode in DEX (Dalvik Exchange) format
- res it contains device configuration, bitmaps, and layouts
- resoures.arsc It contains compiled resources in a binary format and it may also include images, strings, other data used by an app.
- Meta-inf This folder contains the manifest information and other metadata about the java packages.
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
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 and CMS
Web3
FAQ
API Tools
Self-hosted vs Cloud
https://github.com/awesome-foss/awesome-sysadmin#identity-management
Backend as service
Service | SSO | Number of years in the market | License | Is it available through Docker, a package manager, or some easily reproducible method for setup? | Comments | Storage | Integrations | What is the bushiness model? |
Supabase | ||||||||
Firebase | ||||||||
Appwrite | ||||||||
Directus |
Auth platform
Service | SSO | Number of years in the market | License | Is it available through Docker, a package manager, or some easily reproducible method for setup? | Comments | Integrations | What is the bushiness model? |
Supabase | |||||||
Firebase | |||||||
Keycloack | |||||||
Authentik | |||||||
Authelia |
Data platform
Service | SSO | Number of years in the market | License | Is it available through Docker, a package manager, or some easily reproducible method for setup? | Comments | Integrations | Nocode | What is the bushiness model? |
Directus | ||||||||
Basedash | ||||||||
Draxlr |
Visualization and reporting platform
Service | SSO | Number of years in the market | License | Is it available through Docker, a package manager, or some easily reproducible method for setup? | Comments | What is the bushiness model? |
Grafana | ||||||
Tableau | ||||||
Chartbrew | ||||||
Datasette | ||||||
Evidence | ||||||
Matomo | ||||||
EDA |
Admin panels (B2B apps - CRUDs)
Service | Self-description | SSO | Number of years in the market | License | Is it available through Docker, a package manager, or some easily reproducible method for setup? | Comments | Integrations | Data sources | RBAC / Row-level policies | Low code | Team-based layouts | Dynamic filters | Permision levels available | Webhook/Workflows |
Appsmith | ||||||||||||||
Budismith | ||||||||||||||
Limbas | ||||||||||||||
Dashibase | Supabase mainly | Supabase | ||||||||||||
Dezbor | ||||||||||||||
Draftbit | Low-code mobile app builder | Supabase mainly | ||||||||||||
ILLA | ||||||||||||||
Forest Admin | ||||||||||||||
Retool | ||||||||||||||
Internal | ||||||||||||||
JetAdmin | ||||||||||||||
Laravel Nova | ||||||||||||||
React Admin | ||||||||||||||
Dango Admin | ||||||||||||||
FlutterFlow | ||||||||||||||
DronaHQ | Low-code mobile app builder | |||||||||||||
Frontend Zero to One | ||||||||||||||
Jet Admin | ||||||||||||||
Plasmic | ||||||||||||||
Tooljet | ||||||||||||||
Appsmith | ||||||||||||||
Tooljet | ||||||||||||||
Openblocks | ||||||||||||||
Dashpress | ||||||||||||||
Motor Admin | ||||||||||||||
PocketBase | ||||||||||||||
SQLPage |
Platform builder
Service | SSO | Number of years in the market | License | Is it available through Docker, a package manager, or some easily reproducible method for setup? | Comments | Integrations |
Voltapp | ||||||
WeWeb | ||||||
Windmill | ||||||
Airplane | ||||||
Superblocks |
Spreadsheet-database hybrid
Service | SSO | When did it start? | License | Is it available through Docker, a package manager, or some easily reproducible method for setup? | Comments | Integrations | Documents | Query with SQL | Import CSV | Database Vews | Export database | Excel functions |
AirTable | 2012 | |||||||||||
Baserow | 2020 | Docker | ||||||||||
Mathesar | 2021 | Docker | ||||||||||
NocoDB | 2017 | GNU AFFERO GENERAL PUBLIC LICENSE | Docker | |||||||||
Grist | ✅ | 2020 | Apache License 2 | Docker |
Automation (Workflow, Orchestrator, Integrator platform)
Service | SSO | Number of years in the market | License | Is it available through Docker, a package manager, or some easily reproducible method for setup? | Low-code | Comments | Integrations |
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
Service | SSO | Number of years in the market | License | Is it available through Docker, a package manager, or some easily reproducible method for setup? | Low-code | Comments | Integrations |
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
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
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:
- Seed phrase:
bottom drive obey lake curtain smoke basket hold race lonely fit walk
- Private key:
0xe5be9a5092b81bca64be81d212e7f2f9eba183bb7a90954f7b76361f6edb5c0a
- Public key:
0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d
- Substrate ID:
5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY
Wallets
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 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 limit.
Gas price.
Transaction cost.
Gas and Block limits.
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
- Logic. Mathematics. Code. Automatic Verification such as Lean Proven or Frama-C.
- 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/
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
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://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