Sunday, March 01, 2015

Building mobile apps for the modern enterprise or consumer

I recently came across an interesting “article” on building mobile apps, actually is more of a Visual Studio brochure. It had some interesting facts that easily explain why you should choose for either building native smart devices apps or go for a common features/language scenario where you get the apps fast in the market.

Interesting enough they even have a chart that shows the choices you have:


Let’s see what this chart tell us. On the far left you have great quality, high costs, great apps. I don’t want to start a fight over colors again, but I see that balloon in a redish/pink background. Then you have Xamarin, where you have a little less quality but gain a little in productivity. Then it goes down to Cordova, where you loose a lot of quality but gain a good chunk of productivity. And the lowest point in productivity comes mobile web, where you obviously gain productivity because you basically write one single HTML app and show it in every platform.

But the funny thing about the chart is that it has an “ideal spot” that reads “Great quality on all devices, agile development”.

Guess who’s in that spot? that’s right… I am, I work with a tool that generates great quality native apps in an agile and productive way. I bet you do too :)


What’s my point with this? I’m not trying to sell Genexus, I’m a terrible sales person, my point is that those of us who use Genexus are in the right path. Maybe some day there will be only one platform and it’ll be easier to start device development, but right now, where there are clearly 3 major players, having a tool that can help us with cross-platform development is a must, and of course, we want the best experience in each platform.

On a side note, keep in mind I’m not even talking about model driven development, which for me is must. I had a teacher at the university that more than 10 years ago said to us, “if you start a new project writing public class you’re obviously doing something wrong”.

Those of us who use a tool for cross-platform agile development have clearly and advantage over the rest, either by app quality or time to market, and when I say time to market I mean time to the 3 major markets. So start your great ideas today.
(great ideas not included)

Source to the original article and chart:


Anonymous said...

Being a Gx user that, after generating a bugged App, feels the pain of lack of support from a tiny community and awful, outdated and incomplete documentation... it certainly feels like being in the wrong track... But thanks for another biased post.

sebastian gomez said...

Hello my anonymous friend, long time no see. I feel your pain, and despite your rude remarks I'll answer your comment. What I mean by the right track is that having a tool for multi-platform development is key in these times. Right now is Genexus, in the future some other tool could come along.
I'd really want to hear more from you and comments in my blog is not the best place. Please reach out to me, create a fake account if you still want to be anonymous, or keep on trolling, whatever makes you feel special :)

Anonymous said...

Sorry, I didn't mean to be rude. And I don't want to be special, I just want to be able to do my work. I am working on a company that's investing in GeneXus, for clients that are used to high levels of customization. Pains to read Spanish articles (using google translate) only to reply "we can't do that" or "we can't solve that problem right now, because we just opened an issue and are waiting for feedback". I had been on a argument about that when I saw your post on how "genexus is the best" and got "pissed off". Anyway, I know you guys do good work and sincerely wish genexus were widely adopted (worldwide). Oh, and thanks for posting my comment.

sebastian gomez said...

Cool! I'm not trying to give you a special treat. It is no good for us having people around saying what we do is awesome, I want people with complains. I'm not saying we're awesome (which I believe we are ;)) but I really wish you reached out and told me about your issues. Maybe there's something you are doing wrong because of our lack of English documentation.

Martín Cabrera Aguilar said...

Hi Sebastián, what do you think about Mendix and how do you compare it against Genexus?

sebastian gomez said...

Hi Martin, I honestly didn't know Mendix before reading your comment, so I went to their site and watched a couple of videos.
They sure have some serious marketing budget there :)
Going technical, I can only say they're basically building hybrid apps just like Cordova. Actually, they ask you to download the PhoneGap "SDK" which is exactly what Cordova is. So I guess I'd put them with Cordova in the diagram (green spot). Good agility/productivity, but mid-range quality apps.

Luiz said...

The only problem is that GX has an old language missing a lot of .net and java features, that has a poor performance, for example to make a left join gx sends one sentence for each line in the database.

sebastian gomez said...

Hello Luiz, I'm not going to reference your C# and Java remarks because some of those features are to help those developer who write Java or C# code.
About the left join, that's not true, I'm willing to help you out if you are having some issues with your project. Regards

quiama said...

Hello Sebastian, Sorry to reach you this way, but you seem willing to help (thanks for that). How can we reach you?

My experience with Genexus is that there are many requirements that seem "basic" and, apparently, have no native support in Genexus.

Let me give you an example.
I am working on a project of building mobile clients for already existing Web Systems (consuming WebServices, formatting, and showing data on mobile screens - remaining as faithful as possible to the original layout, which users are used to).

One of the features I must deliver is a "schedule" with a list of tasks: Each task having its own user-defined forecolor and backcolor (that are also part of the webservice response, as RGB codes).

... aaaand there's no way of defining colors at run time. You can only manipulate font/table colors using theme Classes.
The support suggested to "either create theme classes for all possible color combinations, or... develop our own User Controls for both Android and iOs!".

Well, as we don't know Objective-C nor Java for Android (that's why we use GeneXus), I had to use csharp code to create images using the text and colors provided, thus increasing traffic, making this structure unnecessarily heavy (load entire grids with images), and the OffLine approach impossible.

I am mentioning "OffLine" because the alternative is multiple IIS installations (one per client), using Dynamic Server URL to point to the correct one... our clients don't understand why they have to install IIS services, and set the URL Property on the device at each update (that are quite frequent), for such a simple App.

I am the only one using GeneXus here in the company (as a test, for building mobile apps), and my .Net co-workers are trying to convince the administration that: "This would totally be possible, easier, simpler... if we were using Xamarin."

Can you please share your thoughts?

sebastian gomez said...

Hello, I don't think I completely understand your scenario since changing the theme class at runtime does not seem like an expensive/bad idea.
Also, I'm a developer of the platform so probably the best answers you'll get will be from our support group or the whole community.
I suggest you post your questions in our forum and/or in Stack Overflow, make sure you tag your question with the Genexus tag I'll "guarantee" you'll have the best answer there.

quiama said...

Hello again, and thanks for the feeback.

Users do define the ForeColor and BackColor for each schedule item in the main system.

Requirement: The mobile schedule must be shown using these settings. As these colors are stored as RGB codes, we have 16777216 (256*256*256) possible colors combination.

I don't think it's a good practice to create 16777216 classes for the backgroundcolor alone...

I placed this question on both forum and StackOverflow. The solution proposed was to either create all these theme classes or to create userControls (for all platforms).
I ended up writing some code in CSharp to generate images based on these colors, and now we are dependent on IIS services to traffic them to the devices.