Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Mike Lewis on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Lianja, Foxincloud & tablet apps 3

Status
Not open for further replies.
Sep 17, 2001
672
US
I am now 49 years old in July of 2017. I have used Visual FoxPro for over 15 years. I don't see any end to using it. I hate .NET and tolerate Python. I am fortunate to work for a company which allows me to develop with Visual FoxPro. That said and burying the question, "Is FoxPro dead?"...

Lianja -
Anyone have experience with this and what are your thoughts on it being what Visual FoxPro 10 should have been?

Foxincloud -
Has anyone had experience converting apps to the web with Foxincloud?

Tablet apps -
I am just finishing up a Visual FoxPro app using a Lenovo 10.1" 320 MIIX tablet. It is super fast and light using local foxpro tables and SQL Server. It is beautiful and has been as always a pleasure.

As long as developers can sell and deliver Visual FoxPro apps which solve business needs, the fox will live on.

VIVA LA FOX!

Regards,

Rob
 
Hi Rob,
You kind of ask and answer your own question. But I think you're looking for some other insights particularly around alternatives.
Your point about VFP on the whole, I agree with. I am highly frustrated with the "modern alternatives" and the excessive time it takes to do simple things that we have been able to do in VFP for years (like class inheritance at the visual control level).

Regarding the others:
Lianja: I recently got a trial version of it, and played around minimally with it. They mention it supports VFP code, but I didn't see exactly how it would do it. I didn't have a lot of time to give to it, in fairness, so I still want to look into it a bit further in a few months when I have more time again.

FoxInCloud: I did the week long class a couple years back after SWFox conference. I was not a fan. If you are using any non-native VFP or a Framework, it's a very long time to get the VFP appearance in a web application. If your app is simpler, and all native it's a little better. My biggest complaint with it though is, it takes over your VFP installation. So all future modifications of your app has to be done in the FoxInCloud client of VFP. Trying to back out of that if you decide not to do it, you need to have made a backup.

"Tablet" applications that are on native Intel platforms are fine, can be run on any Intel based non-Atom processor. So long as it runs on Windows platform, they will keep working.
Do you have a screen shot of your tablet app? Would like to see that.
The one downside to tablet apps is that VFP doesn't support multi-touch and a few other "modern interface" items, but they can be worked around to a degree.


Best Regards,
Scott
MIET, MASHRAE, CDCP, CDCS, CDCE, CTDC, CTIA, ATS

"Everything should be made as simple as possible, and no simpler."[hammer]
 
Recently there is the urge to turn off SMB V1 protocol and just use SMB V2 and/or V3, mainly because ransomware makes use of SMB1 flaws.

That means no more control about OpLocks, they are forced on us. The Hotfix already streamlined into the normal SMB versions still doesn't fix DBF/CDX file handling. This topic now will most probably come up again more often with concerns of SysOps and you can't deny their right to prioritise the overall safety over the stability of DBF files. That means we're bound to fiddle with some LanmanServer/Parameter keys to optimise SMB/OpLocks to cause the least problems. I don't know of a solution with OpLocks active without any problems.

So, if I take that for granted and am pessimistic about that ever being fixed, VFP multi user applications within a LAN/WAN environment are a dying species.

That doesn't harm using VFP as local single user applications, eg on tablets, unless you use tablets as the end user devices of a multi user DBC via a company Wifi, where that in itself is a stability issue. Under the circumstances a multi user solution needs the application itself only address local files and that means a terminal server solution, where the network is betweeen user end client device and the terminal server only.

Not being able to turn off OpLocks also doesn't harm any VFP desktop applications based on client/server principles and using MSSQL or MySQL or any DB Server as backend.

But I see that as a sign of things out of our control, even if you are very proactive about protecting your VFP assets, i.e. your VFP retail box CD or ISO download and all the other things you installed to have your developer environment, the outside world changes are not under our control.

Last not least, though I don't want to get too personal I mainly see developers even not knowing VFP deeply in and out itself sticking with it. Likely those, who don't do development as their main profession. It's surely harder for them to start new if they even don't have the drive to deep dive into any aspects of the tools they do use. There's no criticism or saying you must do so, if your focus is on other things, too, but of course, you have it harder to expand programming skills, if that is not your main task or talent.

I am quite the same age and have spent quite the same time on VFP, more on development overall before 1999. I had a non-professional history of computer programming, which already started in the 80ies for me with 6502 Assembler, so I can state I have spent double time on programming. I already stated I pick up on PHP skills and go into web development, that means I also pick up on all surrounding aspects of HTML/CSS/Javascript, I have recently started a few courses on Udemy, as they had an offer for new users for a flat price of 10USD per course. I do pick up on Laravel (PHP), also the "Mean" stack and Kotlin for cross platform development with a strong weight on targeting Android platforms. I recently said Nativescript might interest me, in regard of Udemy there are only a few Nativescript offers, so it's a bit too new. Though I also do have an interest on two of three components NativeScript interoperates with: Angular and Javascript. Angular itself is based on Typescript which is just strictly typed Javascript. So, in the end, Javascript is a major thing to learn and then Node.JS obviously is a good option, too.

I become friend with JS more and more and the ability to also use it server side, eg in the context of scripts for Google Apps, GSuite, Google office suite. This makes it the VBA of Google documents and spreadsheets, which means learning even more, namely the whole world of Google APIs, though that's learning libraries and framework rather than learning yet another language. And all that is learning while you go with tasks.

So yes, all other development is not as self-contained as developing in VFP, has much more ties into each other, which you can't only judge as pro or con.

Bye, Olaf.
 
Rob,

I can't help you with Lianja or tablet apps, but I did have some experience with FoxInCloud about three years ago. I'll summarise some notes I made at the time.

When reading this list, please bear in mind that it is based on notes that were written in 2014, and might well be out of date now. Also, I didn't use the product very extensively, so this is by no means an expert opinion.

1. An important goal of FoxInCloud (FiC) is to retain compatibility with the desktop. Thsi means that, after you have converted your app to run under FiC, it should still run as usual on the desktop, so you can maintain a single code base for both desktop and web versions of the app.

2. There are a number of features that are not supported. These are mainly because they are not supported in the browser. It might be possible to overcome these limitation with some Javascript coding. The features in question include right-click events and context menus; IncrementalChange event (can use LostFocus instead, but that would be no good for things like incremental search); Destroy event; "Active" properties (ActiveForm, ActiveControl, etc.); ACTIVATE command; AfterRowColChange (in a grid); MouseEnter and MouseLeave; and resizing a grid.

3. Toolbars are not supported. You can use ordinary forms to simulate toolbars, but docking is not supported either.

4. Printing of reports is not supported. The workaround I used was to generate the reports as PDFs, and then to use a free-standing viewer program to display and print the reports. At the time, there was a suggestion that future versions of FiC would be integrated with XFRX, but I don't know if that ever happened.

5. Changes must be made in how you define public variables and certain SET commands (these weren't an issue for me, but I noted them anyway).

6. You have to get rid of anything that can cause a modal state in your server-side code. In particular, things like message boxes and file opening dialogues must be removed.

7. At the time, the vendor was a one-person company. That person did all the development, support and marketing.

8. At the time, there was no formal support mechanism, only an email address. I had no reason to use this, but others told me that the support was very good.

9. There was no formal documentation for the product, but there were some useful tutorials.

I hope you find the above useful. In my case, I decided not to continue with FiC, mainly because of the work that would have been involved in converting the particular application I was working on. But that should not be taken as a criticism of the product. If anyone is looking for a way of moving a FoxPro app to the web, I would recommend that they do their own evaluation FiC.

Mike


__________________________________
Mike Lewis (Edinburgh, Scotland)

Visual FoxPro articles, tips and downloads
 
Hi Rob,

I'm Thierry Nivelet from FoxInCloud; I'm here to add information to previous answers.

Scott said:
If you are using any non-native VFP or a Framework, it's a very long time to get the VFP appearance in a web application. If your app is simpler, and all native it's a little better.

1- The time it takes to get the "VFP appearance" does not depend on how many layers of class you have in your application. As VFP frameWorks a no longer supported, it'd be better if users of the same frameWork group their effort to adapt the framework.

2- Rather than getting the "VFP appearance", you'd probably like to deliver a more modern appearance; FoxinCloud now offers an option to generate Bootstrap HTML code so that your app looks like any modern Web Application, and can be used on any terminal including tablet and smartphone. This blog post shows some forms: VFP original, 'classic' rendering, 'responsive' rendering using Bootstrap.

Scott said:
My biggest complaint with it though is, it takes over your VFP installation. So all future modifications of your app has to be done in the FoxInCloud client of VFP. Trying to back out of that if you decide not to do it, you need to have made a backup.

Both true and false

true: once adapted, your code has some dependencies over FoxinCloud; all these dependencies are free to use and distribute; you can get them at any time on GitHub:
false: your app can have both adapted and non-adapted code, and you can continue with 'traditional' VFP coding at any time if you desire; for instance you can publish only a part of your app on the Web (the adapted part), and keep the rest not adapted. To do that using FAA, you can just ignore the files you want to keep not adapted. And if you want to adapt them later, you can just 'recall' them and they'll show up back in FAA.

Mike said:
There are a number of features that are not supported. These are mainly because they are not supported in the browser. It might be possible to overcome these limitation with some Javascript coding. The features in question include right-click events and context menus; IncrementalChange event (can use LostFocus instead, but that would be no good for things like incremental search); Destroy event; "Active" properties (ActiveForm, ActiveControl, etc.); ACTIVATE command; AfterRowColChange (in a grid); MouseEnter and MouseLeave; and resizing a grid

As Mike mentions beforehand, FoxInCloud has improved over time and many of the features he mentions are now supported (some were already supported back in 2014):

[ul]
[li]right-click event: supported, see [/li]
[li]context menus: supported[/li]
[li]IncrementalChange event…: (Mike probably refers to textbox.InteractiveChange); this issue exists in all Web applications, not only FoxinCloud: you can emulate .InteractiveChange() using the .keyPress() HTML DOM event, it's more difficult to get the server process this event dynamically; however you can implement a custom keyPress event to query a list on the server based on some character typed; this event can be processed on the server without user state maintenance, and be fast enough. Besides many developers use .interactiveChange() instead of .Valid() and just need to move the code once for all[/li]
[li]Destroy event: supported except is does not fire the same as in desktop; any code doing user-dependent stuff needs be moved to .release(); the rest (like garbage collection and/or table USE IN) can stay in .destroy()[/li]
[li]"Active" properties (ActiveForm, ActiveControl, etc.): supported through wActiveForm() and wActiveControl() (part of FoxinCloud public layer)[/li]
[li]ACTIVATE command: all supported except activate window and activate screen[/li]
[li]AfterRowColChange (in a grid): has always been supported, base of any VFP application: see page 'grid', check 'allow cell selection' to see before/after column change fire[/li]
[li]MouseEnter and MouseLeave: has always been supported; again an issue common to any web application: these events are too fast to be processed by the server, you need to process them in the client browser instead. In many case you can replace the VFP code by an ':hover' CSS directive (hightlight, change fore or backcolor), you don't even need to code in JavaScript; you can see these events fire here: [/li]
[li]resizing a grid: form.resize() is supported since V 2.22 (10/15/2016): you can see it in action here: click 'data update' or 'grid.*RowColchange()', then resize the form using the bottom right angle. Note that the form retains the same dimension if you call it as a full page using the menu in left margin[/li]
[/ul]
grid.resize.png


Mike said:
Toolbars are not supported

Menu are supported and generally most applications have both a toolbar and a menu. The reason why we've not supported toolbar yet is that it does not fit well with current trends in Web Application design, especially responsive apps.

Mike said:
Printing of reports is not supported

false: you can see it here: (responsive); you can also see the couple of lines you need to write to adapt your code.

Mike said:
Changes must be made in how you define public variables and certain SET commands (these weren't an issue for me, but I noted them anyway).

false: the only change you may need is: for runtime optimization, you better declare all your PUBLIC variables at application startup; not a big deal as FAA finds for you every place where a PUBLIC variable is declared.

Mike said:
You have to get rid of anything that can cause a modal state in your server-side code. In particular, things like message boxes and file opening dialogues must be removed.

false for at least 2 reasons:
[ol 1]
[li]FoxInCloud supports all modal states and responses from modal dialog; you can see this, and the corresponding code here: [/li]
[li]FoxInCloud adapts the corresponding code automatically (in step 2-adapt); eg. changes [tt]MessageBox()[/tt] into [tt]wMessageBox()[/tt], [tt]do form[/tt] into [tt]wForm()[/tt], etc. Of course the whole instruction is adapted, including parameters[/li]
[/ol]

All you need to do is store the response from a modal form into a property and tell FoxinCloud its name, or use the standard '[tt]wuValue[/tt]' property.

Mike said:
At the time, the vendor was a one-person company. That person did all the development, support and marketing

false: just click the 'about' pad on our site's menu and you'll see the 3 people participating in FoxinCloud.

Christophe Unrug has been in charge of Sales and Marketing since 2010:
A single person could not have done so much coding (3,500 modules) and sales material alone: see the video collection

By the way West-Wind Technologies is a one-man shop and I've never seen any concern about it… FoxInCloud bashing again?

Mike said:
At the time, there was no formal support mechanism, only an email address.

false:
[ul]
[li]there has been a 'FoxinCloud' section on West-Wind support board and LevelExtreme for more than 5 years, West-Wind support board is mentioned in the header of each page of our site.[/li]
[li]we have a Facebook and Linked-in page and also a group on both[/li]
[/ul]

Mike said:
no formal documentation for the product, but there were some useful tutorials.

right: we plan to work on that in the coming months, to complete the 'how-to' and FAQ sections

So far we have set priority on extending the support scope and delivering Bootstrap responsive HTML/CSS, a major demand from end customers.
 
Hi Thierry,

I'm delighted to see you here - and especially to see all your comments on our earlier posts.

It looks as if FoxInCloud has come a long way since I evaluated it in 2014, and I'm happy to be corrected and to brought up to date on the points I made.

Mike



__________________________________
Mike Lewis (Edinburgh, Scotland)

Visual FoxPro articles, tips and downloads
 
Hi Mike,

Thanks for your kind words

I wish I could be notified whenever a question arises on Tek-Tips regarding FoxInCloud; I'll look into the notification parameters.
 
I wish I could be notified whenever a question arises on Tek-Tips regarding FoxInCloud

As far as I know, the only notification service offered by Tek Tips is for replies to threads you have started yourself or which you participate in - not for posts on a specified theme or topic.

You could always set up a Google Alert ( That could notify you of any mention of FoxInCloud - but over the whole web, not specifically for forums.

Mike

__________________________________
Mike Lewis (Edinburgh, Scotland)

Visual FoxPro articles, tips and downloads
 
Rob,

We have been investigating ways to move our enterprise level Fleet Management System, written in VFP9, to a modern, desktop, web and mobile platform for the past 2 years. We evaluated Several "home grown" solutions as well as Fox-in-Cloud, Servoy and Lianja.

Basically, we found Servoy to be very nice but it didn't seem to be related to or close to VFP in any particular way so it was rather disappointing. We found that moving to Servoy would require a full rewrite using new skills.

We did a Fox-in-Cloud analysis on our system and it reported some 7000 changes required!! We reviewed the changes and came to the conclusion that Fox-Cloud was designed to allow us to convert our existing code to web enabled code. While the concept and approach seem perfectly sound, in fact it is just about how we would do it if we were to roll our own, it would require so many changes that it would effectively be a rewrite. In the end we decided that while we wanted to leverage our existing skills and, where possible, our code base, w weren't sure that staying reliant on VFP was the best long term solution.

Finally, we trialled Lianja and we found it to tick all our boxes. It allowed us to leverage our existing skills and knowledge due to Lianjas ability to use VFP as a scripting language on the server. It also allows you to use python, php, JavaScript, typescript and babel. Perfect, we can use our existing VFP knowledge while learning other scripting languages. Awesome. like VFP, Lianja is fully integrated with the high performance Recital database allowing data centric design and development. the Recital database has all the bells and whistles of a top of the line database including security, clustering etc. Lianja provides a complete, front to back, top to bottom, one stop shop RAD platform using standard sectins, components, widgets and gadgets. Like VFP, you can start simple with no code development and progress to custom sections, widgets and gadgets. Lianja also includes a component packaging system to allow developers to create custom, self contained components which can be distributed, shared etc. Very DRY.

On top of that, Lianja allows creation of desktop, web, mobile and electron apps using a single code base. Did I mention that Lianja runs on Windows and Linux? Is integrated with GIT and Cordova Phone Gap? Provides a restful, Odata server for data automatically? Supports any data using ODBC and virtual tables? Provides full intellisense across all scripting languages? Includes a full deployment, packaging and distribution system? Has a cloud based version? Has features designed to import VFP data, forms, classes etc.? Has an interactive live environment just like VFP?

There are actually many more impressive features already in the Lianja system with more on the way, like compiling mobile apps to React Native apps and incorporating the Roslyn compiler to allow C# scripting etc.

We've just purchased two APaaS Developer license and a Lianja Cloud Server license and are starting work on the new system.

long story, well long, I think Lianja is a no brainier.

By the way, I don't work for Lianja and have no ties or associations but I'm already a die hard convert. Does that show?

Cheers,

Rob

 
Hi Rob,

Glad you could find a suitable solution.

Just for the record, in:
Rob said:
in fact it is just about how we would do it if we were to roll our own, it would require so many changes that it would effectively be a rewrite
what do you mean by "roll out our own"?

Besides the number of changes (7,000 in your case), FAA provides the % of your code these changes represent.

From the applications shared by FAA users, the average out of 4k projects is 1.18%. Did you get significantly more than that?

80 to 100% would probably mean a "total rewrite", 1% to 2% can probably be called a "minor rework".
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top