My new app AfsaneDB (Beta) is now in PlayStore!

Those who love reading classic literature can now enjoy literary masterpieces in this beautifully designed app.

Wednesday, 26 April 2023

Building an App Builder - Strategies, Limitations and Available Tools

As a budding app developer, creating an app builder for mobile devices is an exciting idea which I'm giving a lot of thinking since early 2019. However, there are several strategies, and limitations that need to be considered before embarking on this journey. In this blog post, I will explore these aspects in detail.

This would be a brainstorming session for me, where I'd just put all that I've found while researching this subject.

Techniques

Scratchware

Scratchware was an interesting project but is now deprecated. Its technique was unique, where the app was built on the device itself, without any internet connection. However, other app builders mostly build the app on the server. Therefore, it is not necessary that the build part should be on the server.

Scratchware was based on MIT App Inventor as per their website before the deprecation. Showing ads before each build, and giving options to arrange items (buttons, cards, inputs, labels etc.) in rows and columns were really awesome features. For logic, it used Scratch Programming blocks.

APK Editor

Another app builder that is worth mentioning is APK Editor, which uses ARSCLib. Another similar one is APK Explorer Editor, which offers a full version via Fdroid.Other repos for Apk Editor might be using apktool.jar. Apktool is also being used in many Android apps, like revanced. How are they able to run.jar tools is a mystery for me yet, as executing jar requires JRE while Android runs on Dalvik Virtual Machine.

A workaround (or not?) is to use jar library via custom Cordova plugin. Plugin docs suggest it can be done easily. See this suggestion from a stackoverflow answer:

Add lib-file element to your plugin.xml:

<platform name="android">

  <lib-file src="AztecReader.jar" />

</platform>

Anyway, ApkEditor recompiles the app on the device itself, without any internet connection. This approach proves that building an app builder on a mobile device is possible without the need for a server.

Cordova-like Environment

Creating a Cordova-like environment on a mobile device seems difficult. Even though initializing an empty Cordova app within the user's device is possible using Node Mobile or AndroidJs, compiling the APK will be tricky as it would need gradle, java jdk, android build tools, apksigner, etc. The end-users may not have these tools installed on their devices, making it difficult for them to compile the app.

Termux

Java runtime, etc., would be possible using Termux in android, but that would require end-users to have Termux installed, which may be a challenge.

Using a Sample App as a Base

Another approach could be to use a sample app as a base and replace its content at runtime using a user-defined config file. This approach is similar to the Cordova-like environment but is more simplified and straightforward.

Meta-data

One of the most popular strategies for creating an app builder is to use meta-data. In this strategy, the "app" you define is meta-data in a higher-level definition that is interpreted in a host wrapper app. This approach makes it easier to create apps as the app builder is more of a code generator.

Desktop - HTML to APK

A tool I found, and tested but never used in production or even to build anything remotely of any use for myself is Website to APK which is a desktop-based tool. The interface looks like it's built using the C# Windows Form Application. The options are really great, and it's user-friendly. 

Softonic's dev bio hyperlink suggests Pravesh Agrawal as the developer. Web, Github, Twitter.

It seems to be using all the standard tools in the background (probably running a bash script for build instructions). Options to select a URL or a local folder are awesome, along with an icon, splash screen, and setting up Admob ids in presumably pre-configured ad spaces. 

This perfectly depicts the "meta-data" type or a "base app" already set, which is modified based on the user's input. 

Available Tools

There are several tools available for creating an app builder on mobile devices. Some of these tools include: 

AppSheet: AppSheet uses a meta-data strategy to create an app builder. It interprets the higher-level definition in a host wrapper app, making it easier to create apps.

A sample response to the question "Building an App Builder - how do they do it?" on stackoverflow as a reference:

I work at AppSheet. There are two basic approaches an app builder can follow: (a) act as a code generator, or (b) implement an intepreter. In the former case, it spits out code that gets compiled into an executable package that can be installed and run on a device. In the latter case, the "app" you define is meta-data in a higher-level definition that is interpreted in a host wrapper app. Each has its strengths and weaknesses. AppSheet uses the latter approach. — Praveen Seshadri

Thunkable: Thunkable uses a simple drag-drop interface and loads of pre-defined templates and customizations. As far as I remember, It also uses Sratch for programming logic similar to Scratchware.

Andromo: Andromo is an online app builder that lets you create Android apps without any coding. It has a user-friendly interface that makes it easy to build apps.

BuildFire: BuildFire is another online app builder that offers a drag-and-drop interface for creating Android apps.

Conclusion

I'm not really sure which strategy would work the best, but a couple of them looks promising to me. For Android on Android, editing the APK and recompiling might be the easiest one. Although I've to dig deeper to understand how APK editor and the likes do it. It's not just unzip and re-zip of the package, which often results in app corruption. 

A desktop app might be simple, but dependencies should be bundled within the executable in that case, otherwise, it'd again feel like something built for advanced users.

References

Scratchware Pro continued on GitHub

How do I build a Cordova 8.x cordova.jar to include in existing Android app?

Integrating Hybrid App (Cordova) with Native App (Java android app) — Part 1 by pankajbhandari08

Decompile and Modify APKs on the go with APKTool for Android [XDA Spotlight] introduces apktool by Andro Black

Android Studio: Add jar as library? Directly or using mavenCentral as per one of the comments

Including .jar file into cordova plugin with suggestion to add lib-file in plugin

Friday, 19 November 2021

Hirday Men Ik Jot Jali Hai - Ghazal by Shakeeb Ahmad

 Read in Urdu (Perso-Arabic) script here.



English

Apna man dukhiyaara kaisa, apana haal to aisa hai

Hirday mein ik jot jali hai jisne tan-man phoonka hai 

Prem nagar mein ik din mein aa nikala tha bhoola bhatka 

Khud ko bhool chuka hoon tab se, jag bhi saara bhoola hai 

Kitnee kaThin hai prem pareeksha, prem hua to kis se hua 

Apne aap ko sabse chhupa ke jisne chain ko loota hai 

Is sansaar mein sab hai tumhaara laikin preet ke taapu par 

Tum ke viyog mein jo dukh bhoge us ka maza to mera hai 

Sufi mulla sant pujaari vird vazeefe sab kuchh hech 

Preetam ke jalve ke aage yaaro sab kuchh pheeka hai 

Main bhee maala pher raha tha us ik naam kee barson se 

Ashkon kee maala pe japa tab naam vo dil mein utra hai 

Man to bahut hai naat likhoonga pyaar se us ko gaaunga 

Lekin tumne mujh kambakht ko is qaabil kab samjha hai 

Poochh raha hoon basti-basti aankhon mein ummeed lie 

Ek Shakeeb Ahmad hota tha tumne us ko dekha hai


Hindi

अपना मन दुखियारा कैसा, अपना हाल तो ऐसा है

हृदय में इक जोत जली है जिसने तन-मन फूँका है

प्रेम नगर में इक दिन में आ निकला था भूला भटका

ख़ुद को भूल चुका हूँ तब से, जग भी सारा भूला है

कितनी कठिन है प्रेम परीक्षा, प्रेम हुआ तो किस से हुआ

अपने आपको सबसे छुपा के जिसने चैन को लूटा है

इस संसार में सब है तुम्हारा लैकिन प्रीत के टापू पर

तुम के वियोग में जो दुख भोगे उस का मज़ा तो मेरा है

सूफ़ी मुल्ला संत पुजारी विर्द वज़ीफ़े सब कुछ हेच

प्रीतम के जल्वे के आगे यारो सब कुछ फीका है

मैं भी माला फेर रहा था उस इक नाम की बरसों से

अश्कों की माला पे जपा तब नाम वो दिल में उतरा है

मन तो बहुत है नात लिखूँगा प्यार से उस को गाऊँगा

लेकिन तुमने मुझ कम्बख़्त को इस क़ाबिल कब समझा है

पूछ रहा हूँ बस्ती-बस्ती आँखों में उम्मीद लिए

एक शकीब अहमद होता था तुमने उस को देखा है


Meanings

Hirday (हृदय): दिल  | heart
Prem Pariksha (प्रेम परीक्षा): मुहब्बत का इम्तेहान | test of love
Sansaar (संसार): दुनिया | world
Preet (प्रीत): मुहब्बत, प्यार | love
Taapu (टापू): जज़ीरा  | island
Viyog (वियोग): जुदाई, फ़िराक, हिज्र | separation from beloved
Dukh Bhogna (दुख भोगना): ग़म काटना, तकलीफ उठाना | to labor, to suffer
Preetam (प्रीतम): मेहबूब | beloved

Friday, 17 September 2021

Teri Muhabbat Ka Jaam Pi Kar - Ghazal by Shakeeb Ahmad

To read in Urdu (Perso-Arabic script), click here

Teri Muhabbat Ka Jaam Pi Kar - Ghazal by Shakeeb Ahmad


GHAZAL

Shakeeb Ahmad
(November, 2019)

English


Teri muhabbat ka jaam pi kar hamaara chehra damak raha hai
Ab is mein dil ka qusoor kaisa jo be-iraada bahak raha hai

Vo hashr-saamaan qareeb hai aur ajeeb mushkil bani hai dil par
Ham us se nazren chura rahe hain vo be-hijaabaana tak raha hai

Ham aise be-dhyaan ko tujhe mil ke yoon to saalon guzar chuke hain
Hamaare kaanon mein aaj bhi tera shoKh lehja khanak raha hai

Kise khabar thi ki daf'atan ho chalega baahar vo dastaras se
Hamen to hairat hai ab bhee kaise ye dil hamaara dhaRak raha hai

Labon pe phir hasb-e-aadat aai hai muskuraahat dabi dabi si
Gale mein phir be-sabab koi aansuon ka phanda aTak raha hai

Taveel muddat se gham hamaara bhi thak gaya hoga qaid-e-dil mein
So ab bilaakhir sukoon hai kuchh ki qatra-qatra Tapak raha hai

Shakeeb saahab! Bahot suna tha ke aap hain ism-ba-musamma
Ye kya hua phir ke aaj yoon sabr ka piyaala chhalak raha hai

(Scroll for meanings)

Teri Muhabbat Ka Jaam Pi Kar - Ghazal by Shakeeb Ahmad

Hindi

तेरी मुहब्बत का जाम पी कर हमारा चेहरा दमक रहा है
अब इस में दिल का क़ुसूर कैसा जो बे-इरादा बहक रहा है

वो हश्र-सामाँ क़रीब है और अजीब मुश्किल बनी है दिल पर
हम उस से नज़रें चुरा रहे हैं वो बे-हिजाबाना तक रहा है

हम ऐसे बे-ध्यान को तुझे मिल के यूं तो सालों गुज़र चुके हैं
हमारे कानों में आज भी तेरा शोख़ लहजा खनक रहा है

किसे ख़बर थी कि दफ़अतन हो चलेगा बाहर वो दस्तरस से
हमें तो हैरत है अब भी कैसे ये दिल हमारा धड़क रहा है

लबों पे फिर हस्ब-ए-आदत आई है मुस्कुराहट दबी-दबी सी
गले में फिर बेसबब कोई आँसूओं का फंदा अटक रहा है

तवील मुद्दत से ग़म हमारा भी थक गया होगा कैद-ए-दिल में
सो अब बिलआख़िर सुकून है कुछ कि क़तरा-क़तरा टपक रहा है

शकीब साहब बहुत सुना था कि आप हैं इस्म-बा-मुसम्मा
ये क्या हुआ फिर कि आज यूं सब्र का पियाला छलक रहा है


Meanings

Hashr-saamaan (हश्र-सामाँ): the one who make rampage, the one who create uproar | उथल-पुथल करने वाला, हंगामा खड़ा करने वाला
Be-hijaabaana (बे-हिजाबाना): unveiled, openly, without coyness, without hesitationपर्दा उठाये हुए, निसंकोच, बिना झिझक के
ShoKh (शोख़): playful, mischievous, cheerful | छबीला, सुंदर, निडर
Dastras (दस्तरस): approach, reach | पहुँच, रसाई
Hasb-e-aadat (हस्ब-ए-आदत ): As per habit | आदत के मुताबिक़
Be-sabab (बेसबब): unnecessarily, without a reason | बिना कारण, बेवजह
Ism-ba-musamma (इस्म-बा-मुसम्मा): eponymous, aptly named, name in which quality is also reflected | जिस का नाम उसके गुण और विशेषताओं के अनुसार हो, 'जैसा नाम वैसा काम' उसका सटीक उदाहरण है

Friday, 28 May 2021

People I listen to...

Over the years, many have asked me to suggest what to read, watch and listen to which will benefit them. For the books, I've started writing reviews about the ones which I like. 

Here, I've listed all the channels I've been listening to. The list is not complete and subject to updates. Also, names are not in any particular order.

— Shakeeb

Note: Obviously, I don't agree with everything a speaker promotes.


Philosophy, Psychology & Logic

Prof. Jordan Peterson

Steven Crowder

Vsauce

Adam Ruins Everything

Ben Shapiro

Ahmad Javaid


Entertainment

Jim Browning

Nigahiga

UFC

Mojahed Fudailat (UFC Animations)

Bad Lip Reading

Patriot Act (Hassan Minhaj)

Obayd Fox (Ar+En Vlogs)

Karan Singh Magic

Shaheer Khan

Dawood Savage

        DIY Perks


IT & Programming

Fireship.io

Two Minute Papers

Code Bullet

DevEd

WebdevSimplified

Ben Awad

The Net Ninja

Srinivas Tamada


Graphic Designing

Mohamed Achraf

Logos by Nick


Politics

Dhruv Rathi

Maulana Sajjad Noumani

ScoopWhoop Unscripted

Shahbaz Ansar (ThePrint)

The Deshbhakt


Dawah & Comparative Religion

Sheikh Ahmad Deedat

Dr. Zakir Naik

Mohammad Hijab (and group)

Mufti Yasir Nadeem Al Wajidi

Maulana Kaleem Siddiqi

The Muslim Skeptic


Islam, Quran & Jurisprudence

Peer Zulfiqar Naqshbandi

Nouman Ali Khan

Mufti Tariq Masood

Maulana Manzoor Mengal (Tafseer Classes)

Maulana Makki Al-Hijazi

Dr. Israr Ahmad

Youth Club

Hanafi Fiqh

Salahuddin Saifi Naqshbandi

Mufti Saeed Khan

Scholarly Subtitles (Arabic content translated)


Tuesday, 11 May 2021

Hamare Paas Yahi Ik Sawaal Rakkha Hai - Ghazal by Shakeeb Ahmad

To read in Urdu (Perso-Arabic script), click here.

GHAZAL

Shakeeb Ahmad
From: Writings of Haramain, 2020

English

Zara sa rukh pe jo huzn-o-malaal rakkha hai 
Ise to ham ne bataur-e-misaal rakkha hai 

Nigaah-e-tishna faqat poochhti hai aapse "kab?" 
Hamaare paas yahee ik savaal rakkha hai 

Kamaal hai, ki bas airaaz-e-lan-taraani se 
Hamaare jaise divaanon ko Taal rakkha hai 

Niqaab-e-rukh ko ulatiye, ke is ki shokhi ne
Hamen ajeeb si uljhan mein daal rakkha hai 

Kabhi to khatm bhi hoga ye imtihaan-e-Shakeeb 
Isi umeed ne dil ko sanbhaal rakkha hai

(Scroll for meanings)

DOWNLOAD AS IMAGE - ENGLISH


Hindi

ज़रा सा रुख़ पे जो हुज़न-ओ-मलाल रक्खा है
उसे तो हमने बतौर-ए-मिसाल रक्खा है

निगाह्-ए-तिश्ना फ़क़त पूछती है आपसे "कब?"
हमारे पास यही इक सवाल रक्खा है

कमाल है, कि बस  ऐराज़-ए-लन-तरानी से
हमारे जैसे दिवानों को टाल रक्खा है

निक़ाब-ए-रुख़ को उलटिये, कि इस की शोख़ी ने
हमें अजीब सी उलझन में डाल रक्खा है

कभी तो ख़त्म भी होगा ये इम्तिहान-ए-शकीब
इसी उमीद ने दिल को सँभाल रक्खा है

DOWNLOAD AS IMAGE - HINDI


Meanings

Rukh (रुख़): Face , चेहरा

Huzn-o-malaal (हुज़न-ओ-मलाल): Sorrow , घम और अफ़्सोस

Nigaah-e-tishna (निगाह्-ए-तिश्ना): Desirous eye , प्यसी नजर

Airaaz-e-lan-taraani (ऐराज़-ए-लन-तरानी): Evasion (from showing His face) saying Lan Taraani translated "You can not see Me!", Al Quran, 7, Al-A'raaf:143 , लन-तरानी (तुम मुझे नहीं देख सकते! अल-क़ुरआन ७، अल-आराफ़:१४३) कह कर अपना दीदार कराने से गुरेज़ और इजतिनाब करना , अस्वीकार करना

٭٭٭

Friday, 12 March 2021

App Release: OneSignal Push Manager - Secure & Free (Android+Web)

OneSignal Push Manager - Secure & Free (Android)
OneSignal Push Manager - Secure & Free
This app helps you manage your app credentials and provides intuitive UI for sending the notifications to your users.

Android: https://play.google.com/store/apps/details?id=com.sarbakaf.onesignalpush

Android app to manage & send push notifications via OneSignal

Features

  • Manage all your apps
  • Stores all your credentials in your phone
  • Offline storage, open-source and hence trustworthy
  • CRUD for app info with lovely UI
  • Simple notepad to save other necessary stuff
  • Send notifications to any of your apps, in any segment
  • From simple heading + message notifs to fancy ones, with icon, banner and extra data to pass-in the app (useful for deeplinks)

User Guide

  1. Get your "App ID" and "REST API Key" from OneSignal Dashboard.
  2. It is recommended by OneSignal NOT to save API key anywhere, therefore our app doesn't save it by default. It's optional.
  3. In the "APPS" section of our app (Push Manager), make a list of app names and IDs.
  4. In the "SEND NEW" section, fill the details and send in a segment of your choice.
  5. Button 1 can be used to send in a segment named 'Test', which you can configure from OneSignal Dashboard for your test devices.
  6. Button 2 can be used to send in a segment named 'All'.
  7. Button 3 can be used to send in any custom segment.
  8. Notepad can be used to jot down & save other necessary stuff.
  9. Profit?

Questions, suggessions and contributions are welcome.

The app is also available as a webapp for testing purposes here:  https://onesignal.netlify.app/

Shakeeb Ahmad

shakesvision

Thursday, 31 December 2020

My New Year Resolution for 2021

 Off you go 2020! Quite a year it was, wasn't it? 

It started with the best thing happened to me till date, the journey to the Holy cities of Mecca and Medina, Saudi Arabia, for 'Umrah. It was overwhelmingly wholesome. Alhamdulillaah! [1] I'm yet to document the experience, but I do have the poetry ready, which you will see on the blogs soon.

Then just about a month later, the covid pandemic started and finally the lock-down. Ramazan [2] came and went by, we couldn't offer prayers in the mosques. Eid-ul-fitr was same. So was Eid-ul-Azha. [3] Sad sad times those were. 

It did bring some positive changes too. We had a lot of free time. People actually started working on things they were passionate about. 

Resolutions

First of all, note that making resolution DOES help. 10/10 recommended. It keeps you focused. It gives you a list to work on. It tells you where to concentrate your efforts. 

When you make one, it might not seem realistic at first, even to yourself. Rather, specially to yourself. But the motivation and consistency it provides easily make you more productive than you were before. 

The key is being motivated. They say, around 90% of people who make resolutions drop them by the end of January. You don't want to be one of them. 

2020

Even when a lot of things which were in the resolution of 2020 are still in pending, I was pleasantly surprised by how much I did finish off. 

The only thing I miserably lagged in was "writing" stuff. I put more effort in development and left the actual writing behind. I miss it. 

2021

  • Releasing new apps consistently, many of which are in the queue right now, about ready for production
  • Hifz (Memorizing Quran)
  • Publishing book-reviews on blogs
  • Finishing incomplete Novel, Translations, Books/Booklets etc.
  • Magazines - Sarbakaf and Personal Bi-Weekly
  • Publishing Videos
  • Interviews
  • Portals Management
  • + Resolutions from last year

Last Words

As I'm writing this, the third decade of the 21st century is on the verge of knocking the doors of times - bringing joys and cries, hope and despair, turning the pages of  everyone's destiny. 

I don't know what this new year will bring, but I am nothing but my dreams. I will continue chasing after them.

________

Footnotes

[1] Alhamdulillah - An expression loosely equivalent to "Thank God", used for gratification/achievement. See Alhamdulillah.

[2] Ramazan is considered a holy month, 9th month as per Islamic Hijri calendar, which is observed worldwide as a month of fasting. See Ramadan.

[3] Eid-ul-Fitr and Eid-ul-Azha are the 2 major Muslim festivals celebrated worldwide.