B4X : Some suggestions and ideas for Erel

aeric

Expert
Licensed User
Longtime User
Here are my point of view:

Ionic

I personally not comfortable with those javascript or typescript syntax, typing command the CLI style, and download dependencies/libraries using npm. I have bad experience with Ionic. I spent very long time to fix a problem integrating Geolocation in iOS app where the ionic library has bugs in permission request. At the end, I gave up. Ionic app is not native and user experience is bad.

Flutter

Look promising but still not stable for production. There is a learning curve. I won't use it for now.

B4X

I love B4X for many reasons. The Basic syntax which I think is the most cleverest programming language ever created on earth. I love the layout designer which is very smart, powerful and always work. B4X is a very high quality and stable. I believe Erel is still working very hard to make this tool as good as possible even though B4X is already an awesome tool.

One IDE

I can live with separate IDE for B4A and B4i. It is amazingly easy to build iOS app (B4i) from the Android version (B4A). The prices to upgrade B4A and B4i are consider reasonable for me. Ionic charge you $120 monthly for accessing the Ionic package and other developer tools.

Look and Feel

All the views in B4A and B4i are 100% native.

My only issue with them is that their theming isn't working for me

Don't confuse XUI or B4X with "XUI Views". You are never forced to use it and especially never forced to use all of its views.

Other than the XUI Views, there are a lot of wrapper libraries available to use in our projects. I have no problem with the views in interface design. Perhaps I haven't met a fussy client.

Community

This community is awesome. This is one place to search and get your problem solved. Forget about searching the Internet for days and yet no one can answer your questions in stackoverflow or quora.

Misconception of public

The problem for B4X is lack of popularity. I guess we may lack of evangelist or we all here are too busy to build our products and have no time to promote B4X to the outside world. Beginners think open source tools are great and don't care how hard the learning curve. Some evaluation websites judge how popular a language is by crawling the questions posted in stackoverflow and github repositories thus making public overrating those languages. When beginner ask the question what is the best language to learn in 2019, there are "experts" keep giving the same answer that tool X or Y developed by reputable companies like Google and Facebook.

My problem

Companies nowadays just follow the trend and hype. Job advertisements are looking for Android and iOS developer which only required Java/Kotlin or Objective-C, Swift, Cocoa, Core Data. This makes me difficult to find job in my country and freelance sites. However, I am not switching to other tools.

Conclusion

End of the day, I have nothing to complain about B4X. For me, B4X is still the best compare to Ionic and Flutter. I know that I can build solid app very fast using B4X compared to other tools.
 

MarkusR

Well-Known Member
Licensed User
Longtime User
2. Use only native interface elements

the ui should be hardware independent.
because there are so much differences or missing properties that break the code once.

at all i think the software development should be more modular.
 

JackKirk

Well-Known Member
Licensed User
Longtime User
Seems to me a major element of the B4X suite is missing in this debate: B4J

I have a project slowly creeping to fruition that comprises:
  • 1 x B4A customer app
  • 1 x B4i sister customer app
  • 3 x B4A behind the scenes/management apps
  • 17 x B4J apps doing all the backend stuff
More than 90% of the customer apps are identical - helped by my own internal (common) Dialog class.

All of the apps share large amounts of B4X code to manage interaction with AWS.

The majority of the code is easily B4J.
 

DawningTruth

Active Member
Licensed User
I like this point very much!
Me too. I don't really like the idea of having to use two different IDEs. I would prefer one and a specific type of class for each front-end. And a common front-end class or something like that. That being said I'm still a novice when it comes to using B4A and B4i together. As only doing B4A at the moment. So perhaps the current approach is better, but my ignorance prevents me from seeing it.

As to the comments about Ionic. That is not a native solution, so would not even work for my app.

And Flutter...
I moved from Flutter to B4A. Two reasons:

1. I really struggled to work with the unintuitive logic of flutter. You are basically using two different dev languages in one. A front end parameter system and then actual code. Also layouts are a nightmare, and there are so many commas. Making it difficult to understand and maintain. And trying to implement an MVP style app is another nightmare.
2. It was not technically possible to do what I needed to do. There are some bugs and shortcomings in the language that have been outstanding for a while. And I'm talking basic things like, you can't use the keyboard in Webview!

I agree with others that B4x is a very powerful coding platform. That takes the best of OO and simplifies it into a pragmatic and usable framework.

My project has moved quite fast with B4A, much faster than I believe it would have with any other platform. Also the platform makes it intuitive to create a very mature app even in the MVP stage, as doing things is reasonably simple (unless you are pushing the envelope). Further, the support I receive from this community is world-class. What an amazing bunch of people.

Erel has done a wonderful job of it all. Thx Erel.
 

AnandGupta

Expert
Licensed User
Longtime User
Hmm...This debate has happened earlier and I think will happen again in future. As a developer, let me put my 2 cent.

The users are dumb, seriously. They want full MS Office suite like application in two days time for 5 dollars.

I have been developing for various clients for last 40 years and have satisfying users. How I did it ?
  1. When users ask what platform are you developing, I mention the most famous ones. They are happy.
  2. When users ask for time, I mention twice what I feel will take with +/- rider, again mentioning the big famous platforms. They agree.
  3. What if they ask for source ? They do ask and I quote 100 * price, with rider that they have to purchase commercial enterprise versions of famous platform separately.
  4. When the application is delivered, believe me, none ever asked in what platform I developed it. They just want easy, fast and beautiful application which is value for money for them.
  5. They give me more orders.
What platform I choose to develop is my sole discretion. It should run on users machine, which may be WinXp (yes many have still), 20 in monitor (app must have scaling) etc.

If I have to explain the users what B4X is or what it can do better than others, I will have big headache and they will never agree. I develop in AutoHotkey, see my signature. Now tell me if I have to explain user that I am using AutoHotkey instead of .Net to develop their product !

I select what is best for me to develop the user requirement. I choose Xbase++, Harbour MiniGUI, AutoHotkey, AutoIt3 etc. and now B4X and even in some combinations of different exes. I get happy and satisfied users.

At the end I must thanks Erel and the community for so much love and support for members. Thanks everyone :)

Regards,

Anand
 

Mashiane

Expert
Licensed User
Longtime User
AutoHotkey
What the!!! is AutoHotKey? ha ha ha. I get your point.

At the end of the day we are revolving around the same kind of components, textboxes, images, sliders, lists, textareas etc etc and when one needs a specialized component, one can wrap java and or use pure B4X, wala!

Best coding platform ever!!
 

Cadenzo

Active Member
Licensed User
Longtime User
For me B4X is by far the best compromise between developing native apps for android and iOS and saving time by reusing code. I can share the functional code in shared modules. If I want, I can with XUI even share most of the UI things.

I don't see the benefit of using the one B4X IDE. It is OK to work with B4A and B4i, but it would be great, if I just could copy&paste the designer views from one to the other.

On server side I use ASP.NET, also with basic. So I don't have to swich the languge a lot. For questions like "why basic" I answer my clients, that it will be anyhow translated to more native code and not slower or faster than other languages like C#. Open minded clients will understand that and with others I don't want to work with.

I really love the smart B4X syntax like "wait for" statement in asyncronios calls. It makes the code much more readable than using events in many cases.
 

josejad

Expert
Licensed User
Longtime User
I don't develop apps for clients, just small apps to support my workmates.
When we had a problem in my job, I thougth an small app could help us. So I made a small one with MIT App Inventor. When we see some apps could help, I decided to change to a more advanced platform.
I tried PhoneGap, Cordova, Appcelerator, ... (just an overview)... reading the 1000 webs about "best multi platform development tools"... and I'm not really sure how I arrived to B4A. I think I read some article talking about Basic4Android... Anyway, I decided to test and... in a few hours, I was really testing "things"... I mean, I was understanding what I was doing, I can see the results immediately in my cell, I can use the visual designer... It was really easy to start doing "things" (as I use to say, to play the guitar is "easy", to play guitar very well is not...).
So my question is: what's the "problem" with B4X to be one of the most well-known platforms in the world?
Sorry, I don't know if this question could sound ironic because english is not my mother tongue, I hope you understand what I'm trying to say.
 

Sandman

Expert
Licensed User
Longtime User
The ability to port layout files between the platforms will be improved.

That's great. And while doing that, perhaps consider switching to json (or something like it) as the native layout file format? To improve diff handling by git, hg etc?
 

Sandman

Expert
Licensed User
Longtime User
It is quite simple to convert the layout files to json: [B4X] BalConverter - Convert the layouts files to JSON
I'm aware of that solution. I just haven't found a way to incorporate it into a workflow that doesn't require me to do manual steps. In my life I need less things to do, not more.

The native format will not change as it will hurt performance
But not in the final application, right? In that case I'm fairly certain that I would be willing to make that trade-off. What's the worst case here? Saving a layout would go from instantly (now) to perhaps three seconds (json or something) - perfectly acceptable for me. And add a couple of seconds for each changed layout during compilation? Same here, perfectly acceptable.

and the other gains will be small.
That's highly subjective and not true for everybody. For me it's valuable to be able to read the diffs. And a binary blob isn't very readable.


A SMALL ADDITION:
I just wanted to add that that I'm discussing this as if there is an infinite amount of time for you to work on B4X, where something like this can easily fit your schedule. I realize that you probably don't have access to a device to create infinite time (and if you do, please link to the Amazon webpage because I want one). Bottom line is that I have full understanding if you opt to not do this because there are other things that have a higher priority. That's life, we all need to make those decisions daily.
 
Last edited:

Erel

B4X founder
Staff member
Licensed User
Longtime User
But not in the final application, right?
Currently the exact same file is used at design time in the IDE, at design time with the designer app and at runtime. The designer app and runtime are based on the same code.
It is of course possible to create two formats and convert from the json format to the binary format as needed. However it will be significantly more complicated.

How are you committing the changes to the source control? Can't you run a batch file at that point that will convert the layouts to json?
 

Sandman

Expert
Licensed User
Longtime User
Currently the exact same file is used at design time in the IDE, at design time with the designer app and at runtime.
Yeah, I can see that it's effective to do it like that. I'm not going to argue with you on this, I trust your decision. I'm just happy if you have this as a vague note in the back of your head if/when you revisit this at some point in the future. :)

How are you committing the changes to the source control?
I'm using Mercurial so basically just a
B4X:
hg commit -m"Fixed issue #123"


Can't you run a batch file at that point that will convert the layouts to json?
Theoretically I could, I suppose. It's quite possible to extend Mercurial with more commands. But, and we're back to my main issue, life, time and energy is in short supply. So I haven't investigated that possibility a whole lot. Plus I'm not overly excited about having to depend on a customized Mercurial. All of a sudden something will crash and I will have to reinstall the whole computer. And then that won't work as before. Unless I document it first - and then we're once again back to life, time and energy.

What I'm finding so attractive about B4X is the fact that it just works in almost all cases. It seriously helps me lots and lots to be productive and churn out pretty damn cool stuff without me having to learn X, Y and Z technologies. This thing with the layouts being binary blobs is just a minor thing that doesn't align with the other experience. So now and then I gently try to nudge you about it. :) But I'm totally serious when I say that I understand and respect that you have lots of other things that have a higher priority.
 

LWGShane

Well-Known Member
Licensed User
Longtime User
A major improvement for B4i would be to implement Extensions and Apple Watch support. Currently I find that Xamarin and Xcode are miles ahead of B4i in terms of feature implementation.
 

Magma

Expert
Licensed User
Longtime User
I moved from .net to b4X... b4j/b4a to be more specifically.. ...well not really straight quickbasic/pascal/c (hey i was student)>vb6(10 years)>.net(5 years)>tried about 20 different programming languages for about 3-4 years>b4x (more than 6 years now - stucked)

There is nowhere in the Earth... the simplicity/the support of community/the power/price...

The only negative... that is not b4x problem... is that "Evil" google platform sdk changes again and again -so all programmers changing their codes (not only at b4a and in android studio too) May be some things... like services... will be better if changing something like startatboot... longrun: true... killable: false... but from the other hand i think that B4A grows up with our voices... Erel never had close eyes/ears...

for example b4j/windows apps not needed to change anything at an app for 3 years now... b4a apps need to change because of android changes.. and will need to change again... this is a symptom of Google... before 3 years we only had android 4.4-5.1 and now we have Android 9 !!!!!

Microsoft out new OS every 5-6years... not every 6 months... that makes the difference of stability...
 

Erel

B4X founder
Staff member
Licensed User
Longtime User
A major improvement for B4i would be to implement Extensions and Apple Watch support. Currently I find that Xamarin and Xcode are miles ahead of B4i in terms of feature implementation.
Making such claims is easy. Have you actually developed a watch app with Xamarin? This is a challenging task.
 

LWGShane

Well-Known Member
Licensed User
Longtime User
Making such claims is easy. Have you actually developed a watch app with Xamarin? This is a challenging task.
I haven't personally developed a Watch App as I don't have a modern Mac to do so. But it looks like it's similar to developing the other extensions. (File > New > Target > WatchKit and then you develop as you normally would.)

There's also a tool for B4i to create "Today" Extensions.
 
Top