New Development. Where do we go?

This topic was created by MJI .

  1. MJI Silver badge

    New Development. Where do we go?

    OK currently our software is a WIN32 application with a client server ISAM database, but how longer will we be able to sell WIN32 systems when everything else is coming along. All are part of the XBASE family.

    So where do we go?

    We will need to be able to go SQL despite it not being as quick at certain tasks as our current database engine, I would be happy to keep it as it is on all 3 server platforms, and does have an SQL mode.

    The language is a minority database handling language, but pretty good to use, but very few people use it.

    We are considering .NET, there is precompiler for the language we use which works with C, and the server work with .NET, still even have ISAM. This would possibly be the lowest risk, easiest move for us.

    However there is an antipathy toward MS now which is making us wonder. Win 8 is generally hated, and we are hearing thoughts of MACs and Linux from our customers. Also some people would like to use Android tablets.

    So what other options are there?

    I have over 25 years as a developer. Happy with object oriented programming, database access, prefer to be able to strict type, hate bossy IDEs.

    Some C, a little C++, lots of Clipper, lots of VO, quite a bit of Alaska Xbase++, some VB (I hate VB6 - evil).

    I would be happy to go to a more main stream environment, as long at the IDE did not make me want to kill its designer.

    I have not even thought about a web environtment yet either.

    1. Brewster's Angle Grinder Silver badge

      Re: New Development. Where do we go?

      It's HTML5. A Chrome Packaged App for the desktop. Cordova (phonegap) on mobile. There are plenty of holes but new APIs every month. You can always spin your own plugins. (Node.js would deserved a mention but it can't compile plugins on windows using the mingw toolchain - which limits it.)

      I've transitioned from assembly to C/C++. I think we're transitioning from C/C++ to javascript - it will be the "C" of the web.

      1. Anonymous Coward
        Anonymous Coward

        Re: New Development. Where do we go?

        .Net has historically been by miles the easiest and cheapest to maintain solution. It might not have been very scalable in the early days, but that certainly isn't an issue anymore.

        The vast choice of underlying code flavours you can plug into .Net is a major benefit - and even really ancient .Net versions are still supported on the latest platforms....Plus of course the best IDE that there is in Visual Studio...

    2. Bogle

      Re: New Development. Where do we go?

      Slightly off what you are asking but instead of proposing a platform I'm going to propose a methodology for finding your platform (or platforms - I think you'll need to master more new technologies than you might initially realise).

      Have a look at your app and try to pick out one small part of it that could stand alone but does touch most of your current system - a full back-end to front-end slice, if you will. The smaller the better. Now try to describe it with use cases or, my recommendation, some user stories that add up to a minimum viable feature (I'm not going to explain terms here, you can look them up).

      With this ready, pick up copies of "Seven [languages|databases|web frameworks|] in seven weeks" and get some ideas. Don't limit your tech choices to these publications' suggestions. Add in JavaScript and C# and Java. Look at Node.js and Angular.js. Get busy on StackOverflow.

      Create fully functional spikes of your mini app. You need to set strict time-boxes on each spike - if it ain't done in the time then the review with your team at the end should ask why. Do work with a team, preferably half a dozen programmers, although even if it's just two of you doing a lot of pair programming it will be better than one person on their own. Making the time to do this may be hard but as you are planning such a major rewrite I hope you'll find your MD/CEO is supportive.

      The advantages will be a good look at the architecture of your app rewrite; learning a lot of new development methodology *and* really getting stuck in to the new technologies that are available to us all.

      Enjoy it! It should be fun.

      1. MJI Silver badge

        Re: New Development. Where do we go?

        Well my abilites are important as I am the main programmer, my boss does some C but to 1980s standard, no multithreading, the new chap is reasonably competent we have some assistance from an Indian programmer (the one who set his own company up) who maintains a shape designing screen for us.

        The bulk will end up on my plate and the new chaps plate if he sticks around.

        I do get our office manager to knock up screens, not a programmer but knows enough to produce a flat edit screen.

        Small bites do make sense.

        I have had the OO pain and the event driven pain, so many languages now are so similar you can almost search replace the code.

        I have found that people who class them selves as users and non programmers but who understand computers are pretty good at user interfaces.

        I think our intention is to make a workable choice, get me to oversee it and use cheap programmers to do the grunt work, leaving me to do the analysis and the more complex code.

        As before I also need to be able to leave it in a state someone else can look after it as this software would be released around 3 to 4 years time, and if this has a ten year life I would be looking at its replacement about the time I would be slowing down.

        .NET even though it is MS is still looking like a good choice due to Vulcan, but I will be looking at Mono.

    3. PCProgrammer

      Re: New Development. Where do we go?

      I know this isn't an answer to your question, but my two cents anyway.

      Having been in exactly your shoes for the last several years, and 4 apps down, here is my solution.

      First I use one of a couple of programs to publish my VFP apps the the web. This allows me to say that my app is web based and allows the clients to launch them using most common browsers from any desktop (Windows, Apple, Linux) and most Tablets. With minimal coding in VFP I can create screens specifically for the tablets and smart phones if necessary.

      Next I convert that back end to SQL. I find that the SyBase Advantage database has some specific useful features for some of my projects but if the VFP code was written using Database containers this is also pretty minimal task.

      This can all be accomplished in weeks instead of years and allows you to stop hemorrhaging clients to your competitor (if this is problem) or at least immediately allows your users to work from anywhere.

      Once having accomplished this you can now start rewriting sections of you product without having to necessarily rewrite it all in one piece.

      From there you have to make a choice. There are several good products out on the market such as Westwinds Web Connect that allow you to rewrite the front end in HTML 5 and still leverage you VFP knowledge for the back end. Otherwise for reasons that have as much to do with personnel choices as technological choices we've been using C++ and are quite happy with the results.

      Jay

    4. Jordan.Sanders

      Re: New Development. Where do we go?

      Devart has updated dbForge Studio for MySQL with the Enterprise edition that along with all features of the Professional edition, features brand new exclusive functionality, including Copy Databases, Data Generator, and Database Documenter, and much more.

      Devart, a Czech software vendor of database tools and data connectivity solutions, has released dbForge Studio for MySQL v7.3, a new version of MySQL and MariaDB GUI tool. Alongside with the new Enterprise Edition, dbForge Studio for MySQL has been updated with improved features of Data Import/Export, Data Comparison, Database Backup and Data Export, SQL Document as well as introduced new connectivity possibilities, trial product activation, and much more.

      The new Enterprise edition of the tool provides users with the following exclusive features:

      • Data Generator allows generating test data and instantly populating the database with it.

      • Database Documenter is a tool for generation of database documentation in HTML, PDF, and Markdown file formats.

      • With Copy Database, users can copy a set of databases by generating and running a script.

      New connectivity possibilities

      Support for MariaDB 10.1, MariaDB 10.2, MariaDB Galera Cluster 10.0 Series, Google Cloud Platform, Alibaba Cloud, Azure MySQL.

      Display of server version when testing a connection

      Support for New Table Engines

      Support for TokuDB, NDBCLUSTER, RocksDB

      dbForge Studio for MySQL is a universal MySQL and MariaDB client for database management, administration, and development. With the help of this intelligent MySQL client, working with data and code becomes easier and more convenient.

      For more information about dbForge Studio for MySQL v.7.3, please visit https://www.devart.com/dbforge/mysql/studio/.

      About Devart

      Devart is one of the leading developers of database tools and administration software, ALM solutions, data providers for various database servers, data integration and backup solutions. The company also implements Web and Mobile development projects.

      For additional information about Devart, visit https://www.devart.com/.

  2. The Original Steve

    The trend

    Is all very web-based, which if you want to target the biggest audience then it makes sense.

    Something like a SQL DB backend, .Net middle-tier and a web front end in HTML5. Anything with a modern browser can access it, and .Net is going pretty strong plus you have a choice of languages too.

    Can have any SQL backend you like, only MS tie in would be for the middleware so forking out for Windows Server to host and using VS 2012 for the IDE which is pretty good to be honest. IMHO I would suggest SQL Server, .Net middle-tier and IIS presenting the web front end in HTML5, tied up with ASP.Net maybe?

    1. Anonymous Coward
      Anonymous Coward

      Re: The trend

      "I would suggest SQL Server, .Net middle-tier and IIS presenting the web front end in HTML5, tied up with ASP.Net"

      +1

      1. John Smith 19 Gold badge
        Thumb Down

        AC:12:58

        ""I would suggest SQL Server, .Net middle-tier and IIS presenting the web front end in HTML5, tied up with ASP.Net""

        I would suggest such comments from AC's are either trolls or PR.

        No name == No worth.

        1. Anonymous Coward
          Anonymous Coward

          Re: AC:12:58

          Yes if an anonymous user states that 2+2 = 4, it actually becomes false.

          1. Dan 55 Silver badge
            Boffin

            Re: AC:12:58

            If one company sold all the 2s in the world, a load of anonymous users saying 'buy two 2s to get your 4' wouldn't make it false but it might make that advice a little suspect, especially if it sounds like a sales brochure and it's obviously ignoring the fact that a 3 and a 1 might also do the job just as well for a fraction of the price. You only have to read these comments to see some examples.

  3. paj

    We're all web apps now

    It sounds like you currently have a "Fat client" app that talks directly to the database. The trend is to have the client talk to a mid-tier that implements the business logic, and the database sits behind this.

    One benefit of this architecture is that it's easier to have a variety of clients - Win32, GTK, iOS, Android, etc. And HTML5 is a very capable client, especially if you use an advanced JavaScript framework like Angular or Backbone. And it avoids a lot of deployment issues, like needing to create an update system.

    There are various protocols for client to mid-tier communication (SOAP, XMLRPC, Thrift), but HTTP with REST and JSON seems to be a winner.

    Also many choices for implementing your mid-tier. Java and .Net are the mature ones, while Python and Ruby have innovative new features. And there's many more. Personally, I like Python.

    Another benefit of introducing a mid-tier is that it's easier to change your database technology. Traditional RDBMS (Oracle, SQL Server, Postgres, etc.) are a fine choice - although there's growing use of NoSQL databases (Mongo, Couch, Neo4J, etc.) Personally, I like Postgres.

  4. JASR

    Dev Platform

    Our main product has been developed in time through various languages, Retrieve4GL (Sage Line 100 DOS language), Clipper 86/87, 5 and 5.2.

    We also had a parallel (albeit far behind in feature set) product written in 4th Dimension (a database/IDE/runtime client/server all-in-one product) for use on Mac's.

    As Clipper was coming to the end of it's shelf life, we started dabbling in Visual Objects and also Visual Foxpro, to see if they were worthwhile development platforms to take the product forward.

    We wanted a cross-platform product, hence dabbling in Visual Foxpro 3... luckily we didn't go that route, as VFP3 was the last version for both platforms.

    As Visual Objects was also proving to be a non-starter, we pulled out the old 4th Dimension Mac product, and with 4th Dimension becoming a cross-platform product, we quickly ramped up the feature set of the 4th Dimension product and created an export from our Clipper product and import for the 4th Dimension version.

    4th Dimension, evolved it's name into http://www.4D.com , and as it's products matured, they added more features, (all built into the same single product/exe file)... odbc, web server, sql server, php server.

    The language has evolved to allow native SQL statements, in addition to it's traditional query/'venn diagram style' sets.

    Now, it's not perfect, (as if anything could be!), and we are now pretty much tied into it, but it has served our purposes well.

    The ability to just copy a single folder on your PC/Mac, and suddenly you have a working database/web server/sql server/IDE, is many degrees of complexity different, to say SQL Server+IIS+IDE. It makes it also relatively simple for our customers, who know they have one server App, which takes minimal configuration for it's setup, and then for the client, either a browser to open, or the client software to simply copy in and run.

    I post, only becuase you appear to have had a similar early development path as our product.

    1. Mog0

      Re: Dev Platform

      In response to JASR's post, I have worked on 4D for 11 years now, primarily on Windows and while I agree with the deployment aspects (really easy) and it is great to have an integrated db engine; however I feel as though I should pass on the other side of my experience with 4D. It's terrible.

      As a company we waste so much time trying to track down and work around bugs in 4D, the performance is awful (it's essentially single-threaded, all of your code runs in 1 thread although the db engine can now use extra threads, which makes little difference), they don't have any degree of object-oriented code, their development environment is a nightmare to use and there is basically no practical source control tools that work properly.

      It may meet your requirements but the only reason we are still using it is inertia. It would take a monumental effort to port onto another platform, although when you look at the time we waste due to 4D's inadequacies, I wonder how long it would take to make that time back. We are still thinking of moving away

      I have used .net based languages and c++ in visual studio quite a bit on my own projects and feel they are just 10-20 years ahead of where 4D are (I'm not exagerating) and advancing faster. It's always amazing when I suddenly find that tapping the tab key will automatically do something that would require me to write 50-100 lines of code in 4D to achieve.

      If I were looking at a new platform I would certainly start my search with c#, it's just fantastic. MS do seem to be trying to shift platforms a lot at the moment, silverlight being ended and WinRT coming in for example but most of these platforms are actually based on the same technology (.net / XAML) and moving between them wouldn't be that hard. They're more like variants of the same platform.

      Hope this helps.

      1. JASR

        Re: Dev Platform

        Hi Mog0.

        Yep, it's bugs are a right pain if you are on bleeding edge. We tend not to be on the bleeding edge, and hence keep our customers hair attached.

        Note: Database is multi threaded since v11 (2009), and web server since v13 (2012)

        As per original post, I was just mentioning my own experience, as it seems to have mimiced the original posters early experiences... and now, also, yours :-)

  5. Robert Heffernan

    Solid Servers

    While Microsoft seems to be taking a real hammering on the client side of the ecosystem, I think the server side is actually pretty solid. While the stupid Metro start menu made it's way into the Server 2012 UI, the server manager is really nice. IIS is solid and the .NET 4.5 framework is awesome with the enhancements made for parallelism and other such things.

    Using SQL Server, IIS and .NET you can build a solid foundation as a back-end for just about any front end you like from .NET WinForms/WPF to HTML5 to iOS and Android apps.

    1. TheVogon

      Re: Solid Servers

      "While the stupid Metro start menu made it's way into the Server 2012 UI"

      2012 doesn't have any UI by default and there is no need to install one. Use the Remote Admin tools if your PowerShell isn't good enough....

      1. Paul Crawford Silver badge

        Re: Solid Servers

        "2012 doesn't have any UI by default"

        Actually that is one of the best things MS has done for ages, dropping bloat and avoiding the temptation of someone, somewhere, deciding to surf the net on a critical box. Never thought I would up-vote TheVogon!

  6. kmac499

    New Dev; Old Dog

    Damn did you read my CV?

    I find myself in almost exactly the same situation with a slight twist , I moved from Clipper\XBase to VB6 about 10 years ago as the App the company sold (Epos) was moved from DOS to Windows. ( IMHO Clipper is still way better for Rapid dev than VB-SQL.) The only way to getthe best out of VB6 is to get your head around "IMPLEMENTS" and it's version of inheritance\polymorphism.

    An additional problem for us is the soon to be expired XP which by comparision is a doddle to install apps on compared to WIN7 and don't even think about 8 The nightmares of UAC, the virtual store directories lack of serial ports on new hardware etc..

    Stateless Web Based Solutions have severe limitations for anything other than the simple data capture\entry or shopping cart apps. Want to print securely, or use a bar code scanner etc.. Yes JAVA and HTML5 may well offer more but the time taken to become Fluent, Elegant and Productive in a new language is going to be the killer.

    As for the future, one of our sideline (non-retail) customers wants a remote data capture app for his field staff written in FIleMaker for iOS on iPads. It's terrible for anyone with any form of client server mindset. Plus would anyone seriously bet their pension on Apple being dominant in 5 years so requiring yet another career reboot.

    My personal choice for a route outa' here is on the Android platform using a tool called Basic4Android, (It looks just like VB.) Purely because it seems to leverage my existing knowledge. But what to make, how to market it and will it pay the bills are the really worrying questions

    The simple truth may well be that the days of "traditional" custom app, PC hosted, Software Development outside of sizeable companies who always seem to write their own, is over. Put simply, us Old Dogs might have seen the best of our carreers.

  7. Bronek Kozicki

    As far as database engine, you should be able to replace ISAM with SQLLite with relatively few problems. ISAM is really, really old technology and I would urge you to migrate away from it as a priority. Of course there are similar engines to SQLLite, just givning you some starting point.

    However if you have a GUI then you also probably want to migrate this; I would suggest something like Qt - while not cheap (assuming you are not doing open source), it will give you ability to move between platforms.

  8. MisterB

    Embarcadero Delphi?

    This might be a long shot.... what about Embarcadero Delphi XE5? It is a Pascal based development environment. Much underrated IMO and a bit minority perhaps but very powerful. But I have used it for 20 years and created major projects with it inc a complete Factory Management System, a full blown Mail Order program which handles everything from the web ordering through to despatch inc credit card processing, stock control etc etc etc and an EPOS backend system.

    It is at home knocking up a small utility as it is creating major projects. People ofetn ask what my software is written in because the end results are very professional (happy to supply example screenshots of what iots is capable of). And it has some great VCL components e.g. direct databse access using Devart components.

    The environment is fine, been around long enough to make it just right.

    The latest version can target Windows, Mac, iOS and Android.

    Just a thought and perhaps something you might want to consider.

    1. MJI Silver badge

      Re: Embarcadero Delphi?

      That would be sideways, not really any benefits over VO, except that I know VO pretty well. But the multiplatform looks usefull.

      1. Christian Berger

        Re: Embarcadero Delphi?

        Well Delphi is kinda dead, use Lazarus instead, that's an open source clone of it.

  9. TrickyD

    Go C#

    You should definitely be looking at the Microsoft stack, I have yet to see many bespoke business apps built on anything else. Have a google around to see what skills recruiters are currently looking for... ASP.NET MVC 4 Razor is the hot one currently. That gives you RESTful WCF end points (so you can easily change your front end) and C# for your services. You could even look to a no SQL DB like Mongo running locally or in the cloud (Azure supports it and is now both cheaper and fast than AWS) and keep your data in JSON format and avoid the cost/performance of SQL Server.

    Stay clear of OSX development - it is painful as hell! Objective C is a horribly syntax and XCode is a joke - not for professional development. Java is... barely changed since the 90's - still comes with awful tools like Eclipse. Don't be fooled, it is free for a reason!

    Nothing compares to VS2012 + Resharper for productivity. Light years ahead of the competition.

    Antipathy toward MS comes from the iOS / Android fanboys that have polluted tech websites over the last few years. Non of them are developers, most of them are idiots.

    1. Lee D Silver badge

      Re: Go C#

      I'm not a professional developer - I code, but I don't do it as my sole and only job.

      As a user, though, I want it to "just work". I don't particularly care for being tied into any single platform, so all that matters is the end-interface to me, and that it works anywhere. Now that we have web-based technologies, that solves a lot of the problems there. So the question then really becomes "What do we run that site on?", which is an answer few care about outside the company. Sure it can be MS with the licensing and other hassles, but it honestly DOES NOT MATTER.

      Which I think is why a lot of non-coders / amateur coders don't get why you'd then go with MS. Running ASP.NET, you'd never Server 2012 back-ends. That's a licence cost and a bit more right there. Then you'll need SQL (although, as you say, there are other alternatives and then we get into things like Azure). C# development tools basically require some piece of software from one company at the moment (you said it yourself, VS), and who knows how long they'll be supporting it or what they'll do to it (did you witness the evolution of VB at its beginnings?).

      All of these are expensive, tied-in commodities that have a vast range of knock-on effects (if you do things PROPERLY, you should never need your users to have .NET Frameworks installed, or use a particular browser, but it's increasingly common for such things to slip into client requirements for software that absolutely DOES NOT need them as they are only a front-end to something else).

      Sure, you *might* get better productivity with the right, very expensive, tools, but it's not out of naivety that some people see that and recoil, where a 1980's--terminal style interface would cost them nothing, with an ongoing licence of nothing, and a license audit cost of nothing, and where back-end development, although a skilled task, has specialised tools that are specific to the case but can ALSO be ripped out and replaced with anything else with minimal cost (e.g. just as analogy rather than a real-world example, replacing MySQL with PostgreSQL, or Apache with something else, or Linux with FreeBSD or WHATEVER).

      The world today (and historically) means that NOTHING on the back-end matters to the user, so long as they get the interface they need. Which leaves it down to developer preference vs cost.

      The interfaces are commonplace now and everyone knows how to work a web-based app, or even a dedicated app on their smartphone, or whatever. The question really is: How do you want to get there? By buying into MS and betting your business on them and their increasing licence and maintenance costs, or seeking alternatives that MIGHT be a bit more uncomfortable to code on if you're not used to them but are much more flexible in their execution and can be moved onto other platforms and other cloud providers as needs change?

      It's that that really causes amateur geeks and people who don't code all day long to look up and think: Hold on. I'd rather put in more effort with less popular tools and end up with something better in the long run. There's a reason that an awful lot of OpenSource software does not come with a VS project file. Because it's never touched by one, and when it is, it's solely for building the Windows executables. I seriously doubt that a whole breed of operating system, driver and application programmers for huge, mission-critical, global pieces of software are struggling with sub-standard tools "just because" they are free. They either buy something in to fix the shortcomings (there's nothing wrong with buying a tool to save you time on a job), or the tools are perfectly fine.

      Fact is, almost every piece of software I deal with as a user / IT guy that has gone down the .NET route has suffered from it. We've abandoned several companies as they announce that the next version of their software will be Silverlight/.NET based and gone with alternatives (sometimes more expensive but not always) that don't place restrictions on us.

      In some cases they were only able to recoup their customers by moving to web-based things where THEY had to deal with all the problems of which service packs were installed, etc. And then they often found that the cost of using those tools is more expensive than just buying a coding team that are prepared to put in the work and getting a nice, modular, portable, flexible codebase on something they can swap out any day.

      The OP is asking about cross-platform stuff here. That's because his users are probably requesting cross-platform tools, which is an indication of how much they want to put trust into any one entity or system type, or even deciding whether to do most of their work on their PC or their phone (a blanket decision like that can kill the flexibility of a workforce). They are asking for that for a reason. And although not a requirement, it pays to think about why they are asking that and whether the same reasons should apply to the back end that NOBODY but yourselves have to manage. If users aren't putting their faith in having a single environment around next year, why should your developers and their network support? It then makes sense to code things in a similar way, to provide modularity and flexibility.

      If you base code on C#, ASP.NET, Windows Servers and Azure, you lose a lot of that almost immediately. You're forever condemned to code only on such platforms and run your code only on such platforms, even if your users never know that. Sure, if you insulate and modularise properly, it will never be an issue (and it is MUCH easier to find a C# programmer in the business world) because it will never leave your company, but you have to cost it properly and that includes the savings such tools will give you over their alternatives. Does C# *really* save you that much time over C++ or Java that it's worth committing an awful lot of resources to a product-lifetime running MS software for everything from the OS upwards, even internally? And the answer to that is NOT a simple Yes or No, but depends on a myriad factors to do with the kind of application, the kind of business and the scale of just about everything.

      It's really a business-case decision, in terms of how you code. And in those terms, I could make a business case for coding my stuff in an MS-only environment with MS-only tools for deployment on MS-only machines, of course, but it would really grate against my better sense when there are alternatives that don't tie my coding to a single platform.

      I would have serious concerns about the longevity of any coder that can only code on one platform, not just from an obsoletion basis but just simple concerns about what they will do when other changes are needed.

      1. Anonymous Coward
        Anonymous Coward

        Re: Go C#

        " you'd never Server 2012 back-ends. That's a licence cost and a bit more right there."

        Most sane / experienced architects would. License costs are a tiny proportion of the TCO. Plus Windows Server is substantially cheaper than say licensing Redhat or Suse....

        "and who knows how long they'll be supporting it "

        Longer than any competitors will commit to.

        "you should never need your users to have .NET Frameworks installed, or use a particular browser"

        You don't need to care within reason - they are already a default part of the enterprise client OS.

        "every piece of software I deal with as a user / IT guy that has gone down the .NET route has suffered from it"

        Cant say that's my experience at all - and I was responsible for 8,000 client applications at one point. The biggest nightmare by some distance is Java based applications.

        "Which leaves it down to developer preference vs cost."

        Quite - and .Net is usually by far the lowest TCO for multi-tier applications

        "You're forever condemned to code only on such platforms and run your code only on such platforms"

        Just rubbish. You can run .Net on Linux if you really want to. .Net also supports dozens of programming languages.

    2. Anonymous Coward
      Anonymous Coward

      Re: Go C#

      I have to agree with much of this.

      However there is an antipathy toward MS now, which is making us wonder. Win 8 is generally hated,

      Here on the Register, yes. Here it's hated. Partly that's because of retards and professional evangelists but mainly it's first-line IT support drones wanting to avoid get any calls from their users.

      Our clients (who are the UK's various police forces and some organizations who it seems have been grabbing entirely too much data) are more than happy with it and with what we can make it do for them. Is there a learning curve? No, just a familiarity curve. The support drones are too lazy to bother with that, though (even while they consistently advocate a full-scale move to linux secure in the knowledge that it'll never happen and they can bitch about Windows forever).

      I also have to second the recommendation of Resharper. If you're any kind of serious developer and you want your OO code to fully exploit the OO paradigm, Resharper's refactoring tools are second to none.

    3. Steve Crook

      Re: Go C#

      > Java is... barely changed since the 90's - still comes with awful tools like Eclipse

      Not so. Firstly Java has moved on a great deal from the language I was programming in during the 90s, I still prefer it to C#. As for IDEs,..

      For Java development I've been using IntelliJ Idea since V2 and it's clearly better than anything else out there. The community edition is free, and if you decide you need the paid for version, the personal license won't break the bank. When I first started using it the community version didn't exist, so I chose to pay for a personal license rather than use Eclipse. It has support for languages other than Java.

      If you go the C# route, I'd strongly recommend investing in Intellij Resharper. It makes MSDEV a tolerable environment.

      I'm not associated with Intellij in any way, I just think their developer tools are excellent...

    4. amanfromarse

      Re: Go C#

      I don't know where to begin.

      Your entire post is ridiculous.

    5. ThomasW

      Re: Go C#

      Microsoft stack is "okay", but proprietary & will cost you (up to mega-bucks) in license fees. Many many enterprise level applications are built in Java, as it runs from desktop to server up to mainframe.

      I wouldn't build an enterprise level app in Microsoft.

      I will note that Microsoft copied C# and the "virtual machine" almost entirely off Java, originally, and that major libraries like Hibernate and JUnit were invented for Java -- then ported. The poster is wrong -- Eclipse is one of the best & most powerful IDEs ever made. Java was the first modern language, and has advanced constantly.

      Have a look at the recruitment ads. You should consider Java and open-source platforms, but definitely not rule out Microsoft. MS are still a major player, but the days of proprietary lock-in are ending.

      A proper development stack would look like:

      - HTML, CSS and jQuery for the front-end

      - Tomcat (Java, free, excellent, globally used web-container) or IIS (proprietary, buggy & difficult)

      - Java or C# (either is fine)

      - Hibernate or Hibernate.Net (persistence layer)

      - PostgreSQL, FireBird, MySQL or SQLite (database)

      Open standards, non-proprietary technology & open-source enable a vast amount of intellectual innovation, technological development & advancement. (As well as making it possible to clearly see & debug everything). MS can only try & counter this with "fear, uncertainty & doubt".

      1. Infernoz Bronze badge

        Re: Go C#

        Yes Java, because .Net and C# are not as portable and more messy to deploy.

        Not Hibernate, it is obese, config heavy, and slow; better the leaner less obfuscated MyBatis 3 for database based persistence, or even just JDBC to start with.

        NetBeans and Maven for development; Maven makes use of your own and 3rd party libraries so much easier than Ant, and the build process is far less likely to go wrong than Ant or nasty IDE projects setups like in Eclipse.

        If you want to do Android too without a server, best use libraries and frameworks which are similar or available for both desktop and Android.

        It would be helpful to look at logging too, because a lot of people neglect this or do it badly; I prefer the SL4J framework and the logback logger.

  10. itzman

    Rub the genie

    And get a LAMP.

  11. Andraž 'ruskie' Levstik

    You could try Python

    Instead of .NET/Java/etc... could try with a Python backend/framework. Then use whatever DB you want that is supported(either noSQL or SQL evaluate what works for you). And I agree HTML 5 for the web frontends if any and possibly QT and WFP(since I don't believe QT is supported on the new interface yet) for any other clients.

  12. xyz Silver badge

    I presume someone above will have said similar....

    In a nutshell, you're thinking in yesterday. You should be providing data driven web services (written in anything you feel like against any database you fancy) returning jSon (or XML or even bog standard html if you're all in the same domain) and your clients can really be any device (subject to security yada yada etc) calling those services via Ajax or whatever. The old idea of the client server PC is long long dead.

    You end up with 2 tiers...the client (whatever it is) and the web service heads.

    The web service heads can have multiple tiers or layers underneath, but none of this has anything to do with the client side.

    HTH

  13. MJI Silver badge

    OK Some more details

    The server we use can mix ISAM and SQL access see below, I can even navigate SQL results with DO WHILE ect

    The main issue is that some people mention they want this or that SQL engine, but no one has yet said no to our current engine.

    // Here is ISAM mode

    SELF:dbBarList:ResetNotification()

    SELF:dbBarList:Close()

    uErr := AdsConnect60( String2PSZ(cPath), ADS_REMOTE_SERVER,String2PSZ(""), String2PSZ(""), ADS_DEFAULT,@hConnect )

    //hit_key(AsString(uErr)+' '+cPath+str(hconnect))

    AX_SetConnectionHandle( hConnect )

    cSQL := "DELETE FROM "+cFile+" WHERE PL_PDate <= '"+SQLDate(dClear)+"';"

    oSvr := AdsSQLServer{ csql, , , "AXSQLCDX" }

    oSvr:Close()

    AX_SetConnectionHandle( 0 )

    // Need a delay here - 5 seconds as a test

    Sleep(5000)

    SELF:dbBarList := dbBarList{,FALSE}

    SELF:dbBarList:SuspendNotification()

  14. MJI Silver badge

    Our database server

    http://www.sybase.co.uk/products/databasemanagement/advantagedatabaseserver

  15. aahjnnot

    what will your customers want in 2020?

    It sounds like you don't refresh your software too often, so you need to consider what your customers will want in 2020. If you don't have a crystal ball, you need to keep your options open.

    Unless you have an overwhelming reason, choose a platform - any platform - that doesn't tie you to a specific vendor or operating system on the client, app server or database server. For me - and I'm a business bloke rather than a techie - that rules out most of the Microsoft tools.

    1. MJI Silver badge

      Re: what will your customers want in 2020?

      Our systems seem to have a life of around ten years, our previous software started in 1995 and some mods made in 2013 (sectioning off a field I have removed), but developement stopped in 2005.

      Current software is about 7 years old and still under active development, bespoke mods, general improvemements ect.

      We sell to a limited market, basically running SOP and manufacturing for a specific industry, and we are a market leader in the UK, but you will never heard of us unless you are in the industry.

      Platforms well, we have had the following questions.

      One company would love to use Macs even as a thin client. Most are buying PCs with Win 7 on, but we keep hearing requests for Linux support in the future. Also with the move towards TIKFAM businesses are feeling that MS do not care.

      Server wise, there is still a proper server out there, but most are now NT family, there seems to be more acceptance there except for a couple of sites, again enquiring about Linux,

      1. Paul Crawford Silver badge

        Re: what will your customers want in 2020?

        We operate in a rather specialised area as well, and over the years have done DOS, Win32, Solaris and Linux code (lets forget about x86 and DSP Assembler, and FORTRAN on a PDP11/32 shall we?).

        At one point we thought NT would triumph and I did some stuff but the dumb changing directions of MS and the rise of Linux as a decent platform means that now we have a couple of legacy DOS applications to support (running on Linux under dosemu, cheaper and much less effort than porting and debugging them) and are moving off Solaris to Linux as fast as we can following Sun's borging by Oracle.

        If you really want to keep your options open, then use something very generic like C++ and the Qt cross-platform tools. I still use MS Visual Studio for a lot of Linux development (where no really Linux-specific stuff is needed) because it is a jolly good IDE!

        Avoid being too vendor-specific, and if you can make sure all new stuff is developed & tested for two different platforms (like Win32 + Linux) as then moving to a 3rd/newer/different platform is relatively easy because nothing already used is too propitiatory.

  16. MJI Silver badge

    Some great suggestions here

    Thank you for all of your suggestions, a lot for me to take in.

    We know have a new programmer with Delphi and SQL experience, but knew Clipper, picking up VO pretty well.

    Well from what I can see a gradual move would work well.

    Start with a fat client cross compiled with Vulcan, new code would be in C#, I will need to learn HTML 5.

    Stage 0 ADS - Visual Objects

    Stage 1 ADS - Vulcan.net

    Stage 2 ADS - C#

    Stage 3 ADS - C#-HTML5

    Stage 4 SQL - C#-HTML5

    Vulcan is a .net version of VO and is known to be one of the few .net clients capable of ISAM with ADS.

    Changing our database server is not a priority but moving to SQL opens up more possibilities.

    I am a little unsure of being MS only on middle ware on a just in case basis but there is Mono I can look at.

    1. Disco Dance Donkey

      Re: Some great suggestions here

      Looks like a good plan.

      If you make the whole front-end C# MVC(4+) Razor then you don't need to worry about the browser other than on Windows machines, where it may need to be forcibly upgraded to cope (yes, I know). This makes your server ONLY reliant on Windows - oh and the option in Tools > Compatibility Settings to force broken mode for intranet is flipping annoying. However you can probably get MVC happily running on Mono/Linux.

      As for code, JS is very fast at computation, so anything that doesn't need securing but needs calculations, farm out to the client side JS. I can provide you with some test cases.

      Licensing costs; MS SQL is expensive, but there are some niceties, most can be replicated with something like Postgre or My. I would advise writing T-SQL and using a factory and an interface with implementations for Postgre, MS and My. The reason for this is T SQL's use of [] as an identifier is easier to convert to other languages. You can also maintain SProcs easier. And, cope with @@IDENTITY. The cost of putting this effort in is minimal, and would allow you to profile usage and performance based on a test workload for you to select what is best for your customer.

      1. MJI Silver badge

        Re: Some great suggestions here

        In a perfect world I would stick with Advantage, as I have nearly 20 years experience of it, but you never know what will happen, hence my thoughts about moving from ISAM to SQL. Currently with ADS anything server only based is SQL best and client ISAM best.

        Running SQL queries against DBFCDX files is brilliant, as is the ability to support a huge number of client languages including the worlds favourite DOS database compiler.

  17. Dan 55 Silver badge

    It's the protocols

    Clients, databases, and even languages may change but I'm pretty sure that SQL and HTTP/REST/JSON will still be around.

    A LAMP stack (or if you insist MS's equivalent) can talk to the middle tier and serve up mobile web pages which work for iOS and Android as well as Mac and PC. Later on native iOS and Android clients can be written if the need arises.

    If you think native Android clients will become popular then that kind of goes with Java as the language for the middle tier. No need for your development team to be so much of a Jack of all trades.

  18. aldolo

    abap is the fastest

    sap backend with abap and html5 frontend in sapui5 (javascript/jquery)

  19. Alan Bourke

    Look at your use cases!

    Do not listen to people telling you that everything has to be browser and HTML5-based if this thing is designed to run on desktops in the corporate LAN space. You will go through a world of hurt trying to get a UI anything like as rich as a desktop application.

    1. paj

      Re: Look at your use cases!

      I agree that looking at use cases is good - build what your users need, not what you think is cool.

      But with HTML5 and some good libraries you can build better UIs than desktop for many applications. With something like JQueryUI you have all the same widgets you'd use in a desktop app plus a whole bunch of extras, like animations. And then AngularJS takes this to another level and you can build responsiveness rarely seen in desktop apps.

      1. This post has been deleted by its author

    2. MJI Silver badge

      Re: Look at your use cases!

      It can be mixed, when you go to a customer and the main system is running in VO, but they stil llike using an old Clipper application, the older barcode server is in XBase++ and another module I personally do not maintain written in VB.

      And at another customer then run lots of SQL against our server for a web app they wrote.

      1. amanfromarse

        Re: Look at your use cases!

        Most sensible comment so far.

        preceded by the most ridiculous:

        *abap is the fastest

        *sap backend with abap and html5 frontend in sapui5 (javascript/jquery)

        Most comments seem to follow the usual internet meme, what i'm using is the best.

        To the OP,

        If you're going web and must use the MS stack, although if you're starting from scratch I wouldn't recommend it, don't go MVC/Web API/EF, just go Dapper(or equivalent) and Nancy. Your codebase will be simpler, smaller and more maintainable.

        Node is years ahead of where MS is going with OWIN, etc.

        Take a look at mean.io

        C# is the only thing pulling me back to MS-land, all my own time is spent on the above.

        TBH, I don't see a bright future based on the fact that you still love xbase, it's 2013 FFS, and that you posted *that* code as an exemplar.

        1. MJI Silver badge

          Re: Look at your use cases!

          No that was a snippet of code where I switch from ISAM to SQL then back to ISAM in the same module.

  20. This post has been deleted by its author

  21. Novex

    Hmm. Personally I'd be thinking along the lines of:

    HTML5 for the front end interface with Apache & PHP on a web server;

    C++ for a core and permissions logic tier on a back end server, keeping the code for data handling as far from JavaScript as possible (never trust a web client with checking of data or permissions);

    Postgres or MariaDB for a back end database storage. RDBMS for most uses is fine, though a JSON implementation might make life easier depending on what kind of data is being stored.

    By going HTML5 based, you won't have so much to worry about with different clients being used to access the system, and also if you change your client computers at a later date, the core logic is not platform specific to the client, being kept away on a server that would probably be running Linux or Unix.

  22. John Smith 19 Gold badge
    Unhappy

    cross platform means *no* Microsoft.

    Beyond that.

    If this is paid development work then tool costs can be justified.

    Note that customs don't care what Nth generation language/IDE you built their app in.

    Sorry but they don't. :( .

    BTW as others have pointed out I think most customers really mean their user interface, which is the only bit 99% of the staff will see. But I'd take it further.

    In order to allow you to dump any part of the stack (company goes down the pan, stupid licensing fees, whatever) you need the stack layers to use global standards, not some home brewed interface they don't (or rather won't) document.

    And you'd better check that compliance. :(

    One last point. Over the years I've come across various bizarre internally developed (mainframe to PC anyone? That's what the language DHL used to use was able to handle) but try getting a)Developers or b)Books about it.

    Your customers don't care but you should. I'll admit I think Delphi is borderline but it's core is Pascal which is an international standard, which is more than can be said for the rest of the 1 company languages

    Yes I sound a miserable ba**ard and no I won't suggest a particular language. But you're going to be spending a lot of time with your "new best friend" so perhaps it's a good idea to make sure they don't have any bad (or at least too bad) habits first?

    1. MJI Silver badge

      Re: cross platform means *no* Microsoft.

      Well it will be paid (by my bosses).

      I am the main programmer in our company I do about 3/4s of it!

      But then when we were still selling DOS applications we were winning contracts against windows apps simply due to performance.

      It was pretty I managed to run Clipper in a 30 line graphics mode and some simple graphics made it look pretty good for the era.

      Ran brilliantly on 98, quite well on XP, flew on Netware 5.x, but running IP on Windows server was a PITA, usable but the speed had dropped off.

      IDEs, well VB6 is horrific, the Visual Studios I have experienced have been OK, Latest is about 5 or so years old, even though I have no serious C experience I can write and read it, can't be too difficult and it feels more grownup than some tools. TBH the VO IDE is quite nice but I can find the bugs pretty easily.

      The things forcing us are platforms other than WIN32, SQL and web access. As well as something more main stream if we need more staff or for when I decide to give up work (nearer to now than whern I started here.). I don;t think 15 years more of VO are practical!

  23. Daniel von Asmuth
    Boffin

    Go south

    Java is your best option if you want to run on Mac, Microsoft, and Linux. C if you need competitive performance. SQL is more or less portable. ISAM gives better performance.

    1. MJI Silver badge

      Re: Go south

      ISAM / SQL I know ADS really flies

      1. amanfromarse

        Re: Go south

        But what else have you tried?

        1. MJI Silver badge

          Re: Go south

          That is the issue - it was the only viable client server system with native support for all the major XBase languages.

          But yes I have seen it up against MS SQL and it was quicker.

  24. This post has been deleted by its author

  25. dssf

    For non-developers, who will want WYSIWYG IDE's, what would be best

    If we do not want vendor lock-in and are loath to see our apps be tied to one desktop, but also want to be on tablets, too?

    For example, I use Lotus Approach. It is easy, fairly stable, and is a snap to do "prototyping" in.

    But, IBM is ending support after mid-/late-2014.

    Lotus Approach has no runt-time executable/standalone app capability.

    Alpha 5 seems to be stuck in windows land.

    Sesame is "unconventional" in is appearance, to me.

    Kexi and most other Open Source "offerings" -- particularly "Base" are not even up to competing with Apprach.

    Filemaker is Mac-Only on the dev side.

    QT might work, but I never figured out how to "bold" database tables and dropdown tables to the forms.

    Codelite eludes me.

    Gambas is not a contender.

    NetBeans and Eclipse might work, but are way over my head.

    wxWidgets, I was told by a wxWidgets developer, doesn't do databases on the backend, especially if I am not a developer.

    Accesss, since I would prefer to NOT consigned to becoming a Windows-dev, is also out of the consideration.

    Rekall way back in 2005 lost out in my list of considerations.

    Why nobody dares to clone Approach and take the ease-of-use mantle is beyond me.

  26. Christian Berger

    Depends on what exactly you want to do

    For your classical "fat" client, go with Lazarus (Open Source Delphi clone) which will happily compile on just about any platform.

    As for SQL, stay clear of MS-SQL, it's probably the worst solution out there. MY-SQL works just as well, and when you have some small solution you can even get sqlite which is like an SQL-server, but without the extra program. SQL is good for anything you need indexes for.

    If you don't use indexes for a table consider plain text files. Those may be a great solution for things like "user lists" and they give you a simple way of getting your system integrated with other systems.

    However today you should be looking into HTML5 or text terminals for the user interface. Ideally your package has a text interface between the user interface and the logic. That way you can bolt on any kind of user interface you like.

    In any case read "The Art of UNIX Programming" (available online) and understand it. It contains important ideas of how to make any modern working real life system.

    And please stay clear of the C# crowd. That is, when you look at the whole picture, one of the worst things you could be going to. It's non portable (won't even run on all common versions of Windows) and only supported by one single vendor with a good track record for abandoning projects even though people are using them.

    1. amanfromarse

      Re: Depends on what exactly you want to do

      *Ideally your package has a text interface between the user interface and the logic. That way you can bolt on any kind of user interface you like.

      it's xBase. Ever programmed in xBase?

    2. MJI Silver badge

      Re: Depends on what exactly you want to do

      I understand data, our databases are at multiple gigabyte levels already, a small number of files have 20 or so tags, it is all header & list sub list ect

  27. dssf

    4D 4th Dimension....

    http://en.wikipedia.org/wiki/4th_Dimension_(software)

    http://database-management-systems.findthebest.com/l/1/4D-4th-Dimension

    I forgot to mention it, and I am reading about it after having forgotten about it since maybe 1995. Nicely, it supports Korean, which is something I cannot get Lotus Approach to save in the dbIV tables. Not sure whether DBV will, or if Approach itself will not ply ball.

    But, it does not appear to have a Linux desktop version.

  28. Stefan 6

    Couple of thoughts:

    It doesn't sound like you have high requirements for the Database. I can pretty much assure you that if you are happy with the performance of an old ISAM instance then pretty much anything out there will do just fine for you. Do your customers a favor and pick something that is easy to manage/install - MySQL (or any of it's clones like MariaDB, etc), MSSQL Express and PostgreSQL come to mind.

    IDE:

    Embarcadero Delphi has been mentioned. You get Android/iOS/Mac/Win32/64 covered with that. It's not a bad environment to get the job done, but as some others already pointed out, it's not exactly a very popular development environment anymore and the future of it doesn't look too golden. Lazarus (the opensource clone of Delphi) has plenty of people actively working on it and looks better, but you don't get Android/iOS with that.

    My recommendation is to go for .NET - .NET is a pretty awesome development environment. Millions of active developers use it and as far as language (C#), available libraries and peer support (from other active developers) goes it's probably the best choice out there right now. Contrary to what others above suggested i wouldn't go for web development (be that ASP.Net Forms or MVC). I love developing in MVC and it is what i mostly do right now, but even i have to admit that developing an application for the Web usually takes me 4-5 times as long as making an old style GUI application. Separating backend from frontend, making it stateless, AJAX'ed and look the same in all browsers(incompatibilities with browsers rendering HTML) takes a lot more time to get things done and unless you have good reasons for choosing that architecture (such as having thousands of customers and wanting a SaaS solution for them) then web development is *not* something i would suggest to you. (there are also performance implications - a web-gui always runs much slower than a native-gui).

    1. John Smith 19 Gold badge
      Meh

      "My recommendation is to go for .NET - .NET is a pretty awesome development environment. Millions of active developers use it and as far as language (C#), available libraries and peer support (from other active developers) goes it's probably the best choice out there right now. "

      You did get the part about cross platform right?

      1. MJI Silver badge

        Cross platform

        To be honest I am easily prepared to run a mixed client system, and with .NET there is also MONO.

        I would put the following down as importance of being able to run as

        Win 7 must

        Linux high

        Mac would be nice

        A middle ware solution would be interesting.

  29. MJI Silver badge

    Some points of interest

    Our order entry system is pretty huge.

    Line pricing alone is about 7500 lines of code, and about 22 data files in use.

    There are multiple pricing systems in use internationally.

    Current .exe is around 30MB plus a few DLLs

    So not a small system really.

  30. Joeman

    Move it to the cloud! re-code in Python and run it on Google Appengine ;)

  31. simon_brooke

    A lot of these suggestions are Microsoft-only...

    And the original poster explicitly said he didn't want Microsoft-specific solutions. There's good reason for that; whatever you personally think of their competence, many of their key products - Vista, Windows 8, WinPhone - have not been well received in the market. Betting your company on Microsoft's continued market success is a gamble.

    As regards the database, provided you stick to vanilla flavour ANSI 92 SQL, you can treat the database engine as pretty much a commodity. The cost of porting from one RDBMS to another will be low. I personally prefer Postgres, which is well established, reliable, feature rich, reasonably performant and free, and which runs on Windows, Linux, OS X and any other server side platform you're likely to use.

    Java is not a bad programming environment. It's portable and reasonably performant, and skilled Java programmers are available. If you use the Eclipse SWT, client-side applications written in Java look like native applications of the client-side OS. However, using the Web to deliver client side functionality, through HTML5 and JavaScript makes more and more sense these days.

POST COMMENT House rules

Not a member of The Register? Create a new account here.

  • Enter your comment

  • Add an icon

Anonymous cowards cannot choose their icon