Moving from Desktop Development to 'cloud' development...

Discussion in 'IT & Internet' started by johndon68, Aug 6, 2020.

Thread Status:
Not open for further replies.
  1. johndon68

    johndon68 UKBF Big Shot Full Member - Verified Business

    3,437 630
    I have, for the last 20+ years, been a developer of Windows Desktop software and the nature of my particular niche means that this is not going to go away any time soon. 'Cloud' is, however, clearly where the software is heading so I need to jump on the bandwagon so to speak.

    I'm been working in .NET for years and I know enough to get by in MS SQL as well so the question is, which environment to move on to for the cloud. I guess ASP.NET would be the most straightforward but I'm more than happy to learn a new language/environment (PHP etc.) if that would be better.

    Any advice on the route to take would be appreciated.

    John
     
    Posted: Aug 6, 2020 By: johndon68 Member since: Nov 2, 2009
    #1
  2. Wayne Smyth

    Wayne Smyth UKBF Contributor Free Member

    38 16
    Hi John,

    Since you're already familiar with .NET it makes sense to continue within the Microsoft eco-system and move to Azure.

    In terms of frameworks, the obvious ones are .NET Core and ASP.NET Core, the latter being for web development.

    If you've been in desktop development for a while and haven't had much exposure to the cloud, or web development, then prepare for a bit of a mindset shift. There are lots of services you can stand up in the cloud with zero code, and just a bit of config.

    Assuming you want to do web development, and that you have little/no experience with this, I'd actually advise not using the cloud for now and sticking to running locally until understand how all the standard ASP.NET Core bootstrapping works. Once you understand how things are working locally you can start to deploy on the cloud and use the additional facilities that are available there.

    Microsoft do provide emulators for things like Cloud Storage and Azure Functions, so you can test some 'cloud only' things locally.

    There are lots of resources out there to help. Microsoft do a lot of videos and there are paid options from companies like Pluralsight.

    Just in case you're unaware, if you were interested in mobile app development, the Xamarin framework, which is also within the Microsoft stable, uses XAML which if you're currently doing desktop development, you may already be familiar with, so it might be an easier jump.

    The only other thing I'd say is that be aware of what version of various frameworks you're using, since the syntax, classes and methods have a habit of changing from one version of a library/framework to another, meaning that you might be trying to follow a tutorial which simply wont compile with the libraries you have.

    Best of luck!

    Wayne
     
    Last edited: Aug 6, 2020
    Posted: Aug 6, 2020 By: Wayne Smyth Member since: Nov 11, 2019
    #2
  3. johndon68

    johndon68 UKBF Big Shot Full Member - Verified Business

    3,437 630
    Thanks for that Wayne, it is much appreciated, it will be web rather than mobile development.
     
    Posted: Aug 6, 2020 By: johndon68 Member since: Nov 2, 2009
    #3
  4. gpietersz

    gpietersz UKBF Ace Full Member

    1,409 333
    It depends on whether or not you like to learn another ecosystem. I have gained a lot by learning things that I have never used (Haskell is a good example) because they encourage you to learn how to do things a different way.

    My favourite language is Python, because of its wide range of application: I am currently working on (developing or advising/helping manage) two websites, two crawlers, and a stock picking application at the moment, all Python. I have used it for other things in the past.

    There are also a lot of other interesting languages and platforms out there: Go, Rust, Elixir (the latter two interest me) and many others.

    From what I have seen MS server platforms are most popular with medium sized businesses.
     
    Posted: Aug 6, 2020 By: gpietersz Member since: Sep 10, 2019
    #4
  5. TopSpek

    TopSpek UKBF Regular Free Member

    175 13
    John. You have hitherto been working within a much more powerful, interesting and rewarding environment than the one which you're thinking of emigrating to. Therefore, you should spend about a month on checking out the environment which sounds so attractive to you.

    The following is a quick step-by-step guide on how you can do this. I will use the Linux-Apache-MySQL-PHP (LAMP) environment as an example, but you could use the Microsoft environment if you choose; this guide would still apply, but you would need to adapt it for a Microsoft environment.

    1. Buy one of those refurbished Dell 64-bit computers which are currently doing the rounds on Amazon or Ebay. Shouldn't cost you more than £100 max; but by now you should be able to pick up something like a 1 TB quad-core 8 GB memory machine for about £60 or £70.

    2. Wipe the Windows 10 OS that your new computer comes with, and install Linux CentOS 8. (I can help you with this.) CentOS 8 is the latest stable version which will keep you going for about the next decade until they deprecate it. Don't install anything fancy like entertainment applications - reserve this machine as your very serious software development box, and ignore all update notifications. There are other flavours of Linux, but I specify CentOS because that's what I know.

    3. For the time being, forget about "the cloud" because, just like a real cloud, the term is somewhat nebulous for beginners, but is actually quite simple to understand once you've learned the basics of web application development, which is very simple compared to what you've been doing for the last 20 years.

    4. Your new CentOS 8 installation should include Apache and PHP, but you may have to upgrade the PHP from 5 to 7. This is quite easy to do from the command line, and again, I can help you with this. If you're not familiar with an OS command line (which I guess you are after 20 years), then start using it now - it's much more powerful than a GUI for this type of work. The distro will also include other goodies such as Java, C++/Qt, Python, etc..

    5. Install MySQL.

    6. Give me a shout and I will send you a beginner's guide on how to set up multiple websites on your localhost, along with other material such as how to use the file manager to FTP and SSH to remote servers - i.e. remote websites with the same LAMP setup as your local setup.

    7. After spending a couple of intensive weeks on familiarising yourself with your new system, you can then start investigating what this "cloud" thing is all about, but be prepared for something of an anti-climax because, for developers, it's really not that interesting!

    For someone who's done this a few times, all of the above is possible in one day, but I estimate that you should allow about a week, which will be fun, but of course you should anticipate a little pain!

    The guide above is an overview. There are of course some details, but no real nasty devils in those details! One detail I would mention here is the installation of the xfce GUI. The latest resident Linux GUIs are awful because they're heading towards all that 'tapping' and 'swiping' stuff which, as you will know, is just no good for software developers.

    I can be here to guide you as best I can if you wish. And I don't know where you're located, but if you ever want to drop by for the odd face-to-face session, then feel free to give me a shout and I'll put the kettle on. :)
     
    Last edited: Aug 7, 2020
    Posted: Aug 7, 2020 By: TopSpek Member since: Jul 15, 2019
    #5
  6. johndon68

    johndon68 UKBF Big Shot Full Member - Verified Business

    3,437 630
    Thanks for all of that, I will give it a go although I'll try it with a VM on my existing PC.

    It's not there is any thought of missing out on something more exciting or rewarding, simply the fact that the software I've been integrating with for 20 years is inexorably moving to the cloud. The desktop software will be around for some time yet but web development is something that I am inevitably going to have to get a grip on.

    Thanks again.

    John
     
    Posted: Aug 7, 2020 By: johndon68 Member since: Nov 2, 2009
    #6
  7. johndon68

    johndon68 UKBF Big Shot Full Member - Verified Business

    3,437 630
    Thanks for that, I'm not averse to learning a new language/environment so I'll check Python out.

    John
     
    Posted: Aug 7, 2020 By: johndon68 Member since: Nov 2, 2009
    #7
  8. mattk

    mattk UKBF Newcomer Free Member

    2,297 844
    Try it and see what you think, but as someone with a background in .NET like you, I found going from the fully integrated and compatible Microsoft ecosystem of .NET, Visual Studio, IIS, SQL Server and so on to a piecemeal concoction of OSs, web servers, IDEs, compilers etc. like moving from the 21st century back to the stone age.
     
    Posted: Aug 8, 2020 By: mattk Member since: Dec 5, 2005
    #8
  9. TopSpek

    TopSpek UKBF Regular Free Member

    175 13
    I was going to suggest a VM but stopped myself. A few years ago, I went contracting for a couple of years in the North West. I bought a new laptop with Windows 8. I found a virtual machine and installed Linux on it.

    I'm not exaggerating, but Windows 8 was just determined not to allow me to work. After a few days, it would just take over my machine, including my VM, and decide to do lots of processor- and memory-intensive tasks which included many networking tasks. The memory became 100% occupied, about 70% of which was dedicated to what Windows wanted to do! This happened several time a day, for about 10 minutes each time. At times I was climbing the walls with rage.

    I bought more RAM to appease the damn thing, and this worked for about a week, but then the problem gradually returned and it decided it wanted even more and soon returned to 100%.

    I tried to identify all the processes which were causing the problem, and made a list of them all, so that each time I logged on to the machine, I could swat them all before starting work. This worked for a while, but the problem returned - nowhere near as bad as before, but bad enough to flush Windows down the bog where it belongs, and install CentOS 6.

    And oh, such bliss ever since! :) Of course, no OS or platform is perfect, but having tried both, Linux is clearly superior - a proper genuine networking OS and developer environment! :)

    And I don't know whether you need a good web host for your live site, but I'd give WESH.UK a try for at least the first month (should be available here on UKBF) - sounds like he knows what he's doing.

    Not saying you shouldn't try a VM of course. In fact, come to think of it, you probably should because you might not experience these problems on the latest versions of Windows. But I didn't mention a VM because I would have looked like a right berk if you had encountered problems! :)

    And Python - well, what can I say? Definitely one the highlights in software development history! I love it and it's addictive. When I was into Perl many years ago, I used to dream of such a tool. Currently I'm using Python for a digital currency and 'turtlebots' (which I will reveal later). However, any developer should be aware that Python is a jack of all trades, but master of none, which means it has disadvantages for certain requirements, if you know what I mean; for example, I wouldn't use it as a web app development tool - use something more appropriate like PHP.
     
    Last edited: Aug 8, 2020
    Posted: Aug 8, 2020 By: TopSpek Member since: Jul 15, 2019
    #9
  10. mattk

    mattk UKBF Newcomer Free Member

    2,297 844
    Just as a follow up, of course what everyone is talking about so far is developing browser-based applications, as opposed to Windows desktop applications. When it comes to actually deploying to the cloud you'll find that Microsoft have developed a whole host of tools which complement their other products.

    For example, Azure has a SQL PaaS which allows you to create and deploy SQL Server instances at ease. Microsoft has a BotFramework and tonnes of code examples (this is definitely something that has progressed in the last decade), which is easily deployed onto Azure which includes all the services and knowledge base out of the box.
     
    Posted: Aug 8, 2020 By: mattk Member since: Dec 5, 2005
    #10
  11. TopSpek

    TopSpek UKBF Regular Free Member

    175 13
    I would never try to denigrate something I know nothing about, and, knowing a little about you Matt, I believe you 100% when you say that the Microsoft environment has evolved for the better. :) However, I would never go back to it because Microsofty things tend to change according to market conditions rather than in the interests of computer science.

    I started with the Microsoft Foundation Classes (MFC). There were some bugs, especially in the date and time classes, but overall it was okay.

    I wrote a few applications, then along came the .NET library which changed everything. Microsoft deliberately engineered this situation so that MFC and .NET were not compatible. What an enourmous pain! The MS developer community was fuming! Anyway, like many other inexperienced developers at that time, I fell for it and changed to Visual Studio.

    Things settled down, just as Microsoft's marketing people knew they would, and I wrote a few applications in Managed C++. I had a play around with C# and Visual Basic, and I was enjoying myself. The languages themselves were great, and the IDE was nice to use. But later I needed to upgrade my machine.

    Microsoft told me that I would not be able to take my existing MS setup over to my new computer, and that I would have to buy Visual Studio again! Unbelievable! I was incredulous!

    It was then that I decided to cut MS loose because I could see that this sort of nonsense was never going to end - I flushed the entire Microsoft development system down the bog where it belongs and started using - guess what - a VM with LAMP - which worked very well in those early days. I think I was using an XP version at that time, but it wasn't long before I started using a UNIX OS.

    Bill Gates and his merry band of jokers have held the world back by decades with their greed, if not centuries!
     
    Last edited: Aug 8, 2020
    Posted: Aug 8, 2020 By: TopSpek Member since: Jul 15, 2019
    #11
  12. Alan

    Alan UKBF Legend Full Member - Verified Business

    6,607 1,823
    I know very little about MS I have avoided it for years.

    I know a bit about cloud & web development.

    As mentioned it is all a bit 'nebulous' and means different things to different people.

    Basically it is a client - server solution.

    In the simplest form the client is a browser responding to html - sending 'messages' to the server and getting responses back.

    I would say most 'web' front ends now uses javascript as a font end language.
    And most implementations use a framework, basically to make life easier e.g. React, Vue or Angular

    As a starting point, you should learn the basics of Javascript ES6 for the client side.

    In 2020 most architectures use an API to communicate from client to server side, using HTTP request methods, you should at least be aware of these https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods

    Then there is the server side. This basically can be broken down into two elements data and logic.

    Data:

    The most popular databases are SQL and the most popular in the web world is MySQL. That is not to say there are not other datastores such as key-pair datastores like Redis, Bolt etc these are often used for ultra high performance reasons. Andof course you can use the good old fashioned flat files of a file system.

    Logic:

    Strangely, the most popular languages in the web server side are not programming languages, but scripting languages -
    PHP - very popular in many of the biggest open source projects - tons of useful built in functions and can be coded in OO style or procedural
    Python - probably the second most popular
    There are also compiled languages
    Java - not to be confused with Javascript - nothing like each other
    C++ - relatively low level OO language
    GoLang - my personal favourite complied language - relative recent - but Goolge 'system programming' language so here to stay - suited to procedural or functional coding style

    Of course there are probably some MS equivalents - but I have avoided understading MS for years so not about to start now.
     
    Posted: Aug 8, 2020 By: Alan Member since: Aug 16, 2011
    #12
  13. Alan

    Alan UKBF Legend Full Member - Verified Business

    6,607 1,823
    No... Invest some time installing Docker. Docker is far easier to spin up 'containerised' environments once you have spent a day getting your head around it.

    If you are going to do anything serious in web / cloud / devops you will need to know about containers anyway.
     
    Posted: Aug 8, 2020 By: Alan Member since: Aug 16, 2011
    #13
  14. gpietersz

    gpietersz UKBF Ace Full Member

    1,409 333
    I think its also worth mentioning document databases like Mongo and search engines with storage like Elasiticsearch and Solr.

    I prefer RDBMSs for most things, and my favourite is PostgreSQL. It is traditionally a lot more correct and bulletproof than MySQL, and, though the gap has shrunk, it still has the advantage. Its also has a lot of features and flexibility (a JSON type which lets you effectively use a column as a document DB, decent text search, a version with an extension for handling time series, etc.). For me, the biggest advantage over MySQL is a transactional DDL, so you can run schema changes inside a transaction: it saves a lot of hassle if a migration rolls back if it fails.

    I think that there are good reasons for that, but its also a very blurry line. Python is byte code compiled, just like Java. Python can be JIT compiled, as Java bytecode is these days. Scripting languages are now used for some large and complex systems not just a quick script and have developed to take on that role.

    Also worth mentioning are alternative JVM languages like Kotlin and Scala - you can use a different language and still use Java libraries.

    @johndon68 I am very happy using Python, but there is a lot of personal preference involved. I know many people who can make a good case for Go, Ruby, or many others. Its fun trying out languages, although it can turn into a huge time sink.

    In terms of what you are interested in: Python is great for web development. I started seriously using Python when I discovered Django which is a great web framework with a large ecosystem of its own. Its also good at working with various cloud service's APIs - its very likely there will be a good Python library for working with any given API, and, if not, there is a library called Requests which is easy to work with. There is also Django Rest Framework for creating REST APIs.

    The biggest weakness among things you might want to do is probably mobile apps. I have used Kivy in the past, but its not that popular and does not compile to native code so is a bit heavier (mind you, I used it to write code for devices so limited they did not even have a TCP/IP stack!).

    Another thing that might be useful is Windows Subsystem for Linux.
     
    Posted: Aug 8, 2020 By: gpietersz Member since: Sep 10, 2019
    #14
  15. TopSpek

    TopSpek UKBF Regular Free Member

    175 13
    This is not correct.

    The issue was addressed in MySQL 8.

    https://dev.mysql.com/doc/refman/8.0/en/atomic-ddl.html
     
    Posted: Aug 9, 2020 By: TopSpek Member since: Jul 15, 2019
    #15
  16. gpietersz

    gpietersz UKBF Ace Full Member

    1,409 333
    To quote from the MySQL docs link:

    If that looks like a minor difference see: https://news.ycombinator.com/item?id=16876232

    Its a huge improvement on previous versions, but still far behind what PostgeSQL does.

    I do not know whether OP is interested in this.
     
    Posted: Aug 10, 2020 By: gpietersz Member since: Sep 10, 2019
    #16
  17. gpietersz

    gpietersz UKBF Ace Full Member

    1,409 333
    Is it a good environment for learning and developing as opposed to deployment? I recall not disliking it some time back, but that may just be me.

    I think we have also all failed to mention that you can run all the open source platforms we have mentioned so far on Windows. A lot of people I work with use Windows as their development environment. I just helped one (who is new to Django) set up a development copy of a Django site on Windows.
     
    Posted: Aug 10, 2020 By: gpietersz Member since: Sep 10, 2019
    #17
  18. TopSpek

    TopSpek UKBF Regular Free Member

    175 13
    Read the statement carefully. What do you think this means? It might help if you remove the first sentence so it doesn't cloud things.

    The statement could be a little clearer, but any developer should be able to understand it. I will post my interpretation after you have posted yours because I would like to hear your explanation, not that from a programming 'religious battle' which, incidentally, closes with an interesting opinion! ;)

    None of the people in that discussion have run any tests, and neither have you. I prefer to trust the MySQL docs rather than them or you. If/when I have a need to use the facility, then I will follow the documentation and code examples for an implementation, and perform thorough tests before releasing any code.
     
    Posted: Aug 10, 2020 By: TopSpek Member since: Jul 15, 2019
    #18
  19. johndon68

    johndon68 UKBF Big Shot Full Member - Verified Business

    3,437 630
    Posted: Aug 10, 2020 By: johndon68 Member since: Nov 2, 2009
    #19
  20. gpietersz

    gpietersz UKBF Ace Full Member

    1,409 333
    Please do lock it. I do not want to get drawn into another pointless discussion either. Especially over something that anyone who is interested in can find an existing discussion easily enough.
     
    Posted: Aug 10, 2020 By: gpietersz Member since: Sep 10, 2019
    #20
Thread Status:
Not open for further replies.