Moving away from Excel Workbook/VBA - Technology Upgrade [closed] - javascript

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 2 years ago.
Improve this question
This is going to be more of a opinion question because I can't find any answer on Google or any SME's within my company that really have a opinion on this.
I wasn't sure if a opinion question is appropriate, so if its not please feel free to delete this, ban me or whatever the rules may dictate.
I'm work on a large set of very old Workbooks that are used for math calculations, these are not used in Production they are for check the results of the Production service. The Workbooks are very old (some 12+ years) and are now what I would call a 'mess' from the last decade of patching/fixes.
I've been researching Handsontable (https://handsontable.com/) a JS library that provides a spreadsheet interface like Excel that would handle all of the setting of the values of the cells etc... Then use Python (or Java if the company prefers for use J2EE) to do some of the heaver calculations (data lookup and projections) on the server side, or client side, I feel that just moving from VBA and Excel itself will provide a performance boost which Operations would just love.
I feel that the initial work would be a lot of hours, but I believe that I can create a common set of library's either in JS/Python/Java that will once completed reduce a lot of the re-coding that would need to be done on the VBA to JS/Python side as 80% of the VBA is common financial formulas.
My fear is that if we continue on the path with the current Workbooks in another 2-3 years they will become completely un-maintainable, alot with the fact that with VBA we don't have proper version control or the use of modern automated code review tools which we can benefit from by using newer technologies and in the long wrong will, hard work aside will prove to be the best option for our developers now and for my future colleagues.
If this question is ok by the rules and moderators, does anyone have any opinion on this? Is this worth while? Is it a waste of time?
Note: I'm not a manager, director or anyone with the power to make a decision as proposed above, I'm just a developer that feels I.... We can do better.
Thank you for your time.

So this may not be the answer for everyone, but I'm going to give you what we decided to invest time in first since this method was already used on another application to move it from a an old language to Java.
We have found several opensource projects online for the conversion of VB/VBA code to Python.
Examples:
http://vb2py.sourceforge.net/
https://pypi.python.org/pypi/vb2py
Once we have the Python code working using the native package to allow MS Interop access we will begin to refactor the Python code into a Django project (this choice isn't firm, but its my preferred choice; <3 Django) including creating the wrapper models for DB access. We feel we can make a wrapper for the MS Interop part to allow it to run as a Django project.
The plan in the end is to have the Django project act as only a REST Web Service for doing the 'heavy math/calculations' functions to Python and also could be on a much more powerful server increasing performance all around. This REST Service would answer calls from a Handsontable (https://handsontable.com/) JS Spreadsheet with the required plugins to handle all the current Excel formulas so we can do a direct 1:1 copy of our cell values/styles (convert Workbook to xlsm makes all the data stored as XML) to a Handsontable 'layout array'; which I think we will put in a DB. So in the end we have now given out Workbooks 15+ years of life and have removed Excel from the equation all together.
The current (mine) reasons for using Django are:
ORM
Independent Django packages makes reducing reduent code easier (I know this could be done with just pure Python but I feel its a good reason to put in my answer for others)
Easy to implement a Web Service using one a few very popular REST packages.
There are others but I believe everyone will get my points.
And the reasons for Python:
Runs on Linux, running VBA Macros server side requires Windows (bad: VM Cost when compared to Linux and less OS overhead).
Very easy to learn (I feel anyway)
Custom method decorators will make apply such things as standard interests rate to the return amount of a method without needing the interest rate code in the actual function that calculations amounts (as an example)
Thanks

Related

Django or NodeJS for long-term web and business project? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 1 year ago.
Improve this question
Good afternoon all, we are struggling to decide which way to go for a project and would like to have some insight from people who have been dealing with this. We have to invest in training/time for the two people who are working on our business and we would like to understand which way to go.
The people
Both have a good understanding of HTML, CSS, SASS and some JS
One has some experience with PHP
One has more experience with Python
The Project
Database driven website that will host and display hundreds of products (laboratory products which will need specific templates for each product
Shopping chart for reagents and lower cost products
A section with a knowledge base
The website(s) will be multilingual, with different products for different countries
Integrated CRM, connected to the products, stock management and shopping chart
Potentially (desirable, but not necessary) an APP for the phone
An application that will link all the components
AI services and big data analytics (as a separate product)
The timeline
2-3 years, potentially 4 for completion
This is to move what we are doing manually at the moment (and what we are planning to do) to something that is kept together by a coherent structure.
We do not have much experience or funds, but we have the man hours to pour into it. Would you suggest to go with Python/Django or with JS/Node? Why?
Thnks
It depends on the kind of data structure you need to keep if your data is kept around the world or in a central location, what kind of traffic you expect to have, and what your future of expansion looks like.
Option 1: Stick to your strengths
The first, and possibly the most obvious option, is to stick to your strengths. If you have someone strong in Python, Flask or Django could be the way to go because of the immense flexibility you have with python scripting, TensorFlow (for AI), and R libraries for statistical interfaces.
If only one of your 2 devs is good at python this will provide some separation of responsibility as you can have one dev focus on the page design and the other focus on the actual app functionality.
My biggest suggestion is to please stay away from PHP. Modern languages and libraries will work for what you need and are usually more reliable, less complicated, and have a whole community of active support built around them.
That being said you have to consider all the components of what you need. If your site needs are truly as large as you've described, you could break it down into microservices that handle various parts of the site independently and scale to meet traffic demands. This is all dependent on what you need of course.
Option 2: Go outside your comfort zone
The second, and more risky, option for you is to exit your comfort zone. NodeJS is a wildly adaptable and extensive JavaScript framework that can be molded to fit nearly any web-based need. The extensive lists of frameworks that can be used are a lot to consider, but you can deliver a more reliable, scalable, and user-friendly product with node. The HTML, CSS, and JS knowledge your team already has would be essential to making a NodeJS site work. Node also has the ability to provide you great flexibility in terms of localization. If you need to have different databases in different countries, for example, node can easily accommodate this and any other complexity you might have to throw at it. It's built to be robust and customizable for any need.
However, the drawbacks to using node are that it would be harder to implement AI and Statistical infrastructure to your site because of the nature of how node sites run. This part alone may make using python the way to go, but it can also make your site buggier, and take much longer to deploy.
Wrapping up
Ultimately the best choice for you is going to come down to your funding, team skills, and the systems you need to create to pull your site together. I encourage you to talk extensively with your development team to understand their strengths, weaknesses, and limits for what you need. Take their input seriously and use it to put together the best game plan possible to create the product you need.

Any advice on my decisions surrounding Python GUI & database? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 2 years ago.
Improve this question
So my next assignment for school involves creating a python GUI app with a database. I just have a couple basic questions that I am not yet 100% sure on the answers to.
I'm very good with HTML & CSS, however not so good at Javascript (I have about 8 weeks for this project however) - is creating an app with ElectronJS or even just in the web browser with pywebview a good idea or would I be best to stick with some of the older, uglier GUI frameworks such as Tkinter or Kivy?
Is there any major reason to learn how to use NoSQL databases over SQL? I already have a fairly decent understanding of SQL.
And finally, does using a GUI and a database (can the database even be inside the .exe?) pose any issues with packaging my whole project into a .exe or .app at the end or is this nothing to worry about?
Thanks in advance :)
1- As gui with python goes i have mostly worked with pyqt5, its pretty good, it is a mature project, you can even use it to comunicate with the database (sql databases) you can install the qt desigmer for a fast ui design, can apply css (or something really close to it) to your ui components and most important (at least for me) you will find a good amount of resources online on how to work with it and solve any issues that may arise.
Still if you want to go for a more electron like aproach and put your html and css skills to use, i would recomend Eel, it is fairly easy to use, i havent created anything too complex with it. Now these gui libraries that i mentioned , can be used with the module pyinstaller to create the executables that you need.
2- If you already have some experience with sql, i recomend that you go with it for two reasons
First: sql database engine will fill most of your needs (if not all), go with nosql if you are dealing with huuuge amounts of data or you really want to learn nosql.
Second:I dont know if your project is going to comunicate with an external database or is embeded in the project, if it is embeded go with sqlite, if not, for sql i recomend postgres and for nosql use mongodb.
3- from my experience, sometimes it can get complicated trying to embed everything (database, other external files) within the executable but you can build the app to be in separated files, i recomend that you use for this like i wrote above pyinstaller, it is wel documented and both gui libraries work fine with it.
Hope this helps, everything i recomended to you is from personal expierience, there are plenty of database engines, python libraries you can use for the tasks needed to complete your project, check what suits you the best.
Good luck, sorry for my english.

Online etl for api mashup, filtering and ordering [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
I'm looking for a free web-based solutions for little etl / mashup tasks.
An example could be:
connect to an api
filter response
using data as input to another api
It's something similar to now not working yahoo pipes and for me is important to have and interface for designers with little code ability (mostly javascript)
Note: I've found this paper with a lot of ideas on this field and some comparison between existing products
Pre warning - this is not a free solution - I did a lot of work around this about a year or so ago, and the free stuff at the time just would not do what I needed.
In the end I used Dell Boomi - now I know what you are thinking - Dell? that sounds horrendous, the manufacturer of crap laptops you say! Why yes….
Boomi came from a bunch of dudes who basically had (what I am assuming to be your problem) to connect a bunch of stuff together, in the cloud, without having to worry about how it all works behind the scenes. It has a fantastic user interface (all web based) - is completely cloud hosted (although you can run the endpoint on your server / computer if you so desire) and, if it all goes tits up with their inbuilt tooling (i.e. you can’t quite do what you need to) - you can run in-line Groovy (java) code within whatever ETL process you are having trouble with - i think this fits the bill for the user friendly designer stuff!
Boomi’s pedigree was and is connecting web services / rest API’s in a quick and easy way but also supports all the traditional stuff if you need it too (IBM MQ, blah blah)
The big downside is that it is not free - in fact quite expensive if this is not for a paid project
There is a 30 day free trial that i recommend you check out - I really did and do have a great time with Boomi for mashing endpoints together.
Now, at the time I also looked at Talend. IF i remember correctly this does not have a web interface, its all based in Eclipse, the problem with Talend when i looked at it was
You need to host the endpoint somewhere (this is usually true of all ETL however of course)
The UI was horrible at the time
Ultimately, finding free ‘ETL’ is nearly impossible - hence why pipes went down?
Sorry I can’t be of more help :(
Ballerina is a programming language custom built for integration, that includes a mature graphical syntax. It can easily be used to glue interfaces together. Since your requirement is to have such a mashup interface in the cloud you can utilize the WSO2 Integration Cloud free trial program to see if its right for you.
I've written a post here that demonstrates how easy it is to use Ballerina for scraping data from interfaces, you can create a service that's similar in logic and host it in the cloud. Find information on the WSO2 Integration Cloud usage here. Find information on serving a ballerina service from the cloud here.
Some more details would be helpful, such as which API you would like to connect to and how many requests you'd be making. Here's one way you might approach this with free tools:
Extract: An IFTTT integration plus their "Maker Channel" (Will post info from one of their 270+ integrations to an API)
Transform: Sheetsu, which turns a Google Spreadsheet into a restul API that you can post to. Transform the data and output it to another sheet.
Load: You can also make GET requests via Sheetsu, or just use the Google Spreadsheets API.

Oracle ADF vs a Javascript MVC framework like EmberJs or AngularJs [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I am starting a new project that has planned to use a large of Oracle components BEPL, SOA Suit, Oracle Spatial and Oracle ADF. I am trying to convince the team that a Javascript framework like EmberJs or AngularJs would be better. I feel like I might not be comparing apples to apple with EmberJs vs ADF. The goal of the project is to expose a large complex database to both our Web Front end and as an API. I think that a Javascript framework would work well with the data being exposed as an API instead of thought ADF where it might use a more proprietary connector.
Well.. comparing cars to bikes always look crazy. However sometimes you choose bike over the car. And sometimes you might want even reinvent the wheel.
However mostly it just shows lack of particular knowledge and very bad decision is trying to get rid of native, supported solution and start repeating it with the tools, you know better.
All oracle stuff now driven with ADF. There should be VERY strong reasons to abandon it. And you didn't provided any.
I'll be subjective with my answer here, as ADF is a very big framework and CAN be used along with EmberJS if you want to ditch the ADF Faces part, however here is my 5 cents into this
Using EmberJS from a Java Developer point of view
Pros
If done right, a great User Experience can be generated.
Very flexible front end development for your front end team.
More options when it comes to Deployment on servers as you don't need to work with Java EE container (I'm excluding the Service part of course).
Cons
Developers will need to learn EmberJS, Backbone or AngularJS
Developers will have to provide a great service layer, and controller in a way that all this JS Frameworks can interact with.
Developers will have to consider security constraints themselves as JS is not secure by default.
Development time will increase greatly and if you are under a deadline it'll be very hard to be met since developers will have to take care of everything themselfs.
This question interested me, so I made a tiny research. If you make a search on tags javascript + oracle, you'll notice that there are only 74 questions tagged. So these technologies do not actually intersect quite often in a real world and it's doubtful if anyone would provide expertise.
I'm learning AngularJS now and I'm quite certain that it's worth every minute I spend on it, it will be there for a long time and that it provides one of the quickest an intuitive developing experiences on the market. It requires learning, though, and even hair-pulling at times if you're a novice, like I was.
PS One of the killer arguments are the numbers for the tags in this question in the top-right corner.
Comparing ADF to JS is like comparing Servlets/JSP to JS. Makes no sense.
ADF generates JS as part of its page rendering, but also allows you to incorporate JS and JS libraries to extend and augment the ADF JSF page functionality.
I suggest you read a bit about JSF before making this decision...or comparison.
AND, if you're working with Oracle, specifically Fusion Apps, which is written in ADF and SOA Suite, (BTW: BPEL is one component of SOA Suite, not a separate product), then you have no choice but to use ADF.
Seems you have some study ahead of you.

AngularJS and Enterprise applications [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
we are currently evaluating the use of AngularJS in a Enterprise Application (e-Banking) as a Single Page Application.
Many of the devs#work are already convinced that there no other way to go. It is the trend, it is future proof (html, css and js) it is easy to do, less burden on the server etc etc.
Despite the interesting part of this framework, i am not convinced that there are factors that must be considered before going this road. These can be:
Maintainability of code
Testability of code, not only the ui part
Continuous integration (like TeamCity or TFS)
Developer friendliness like debugging, navigating through code
Security (if there is a risk)
Has anyone any experience on enterprise apps build like that? I would rather go with Asp.Net MVC4. Please no hypothetical answers, i don't want to start a war. Real life experience is really appreciated.
Regards
I had thought about this when incorporating Angular into our enterprise application. First, some optional background information. I really needed to keep all my page state on the client side since recreating it on the server side is a very resource intensive task. I started off with building it with just JQuery, since I only needed a few things, but soon I found myself having trouble keeping track of the callbacks I wrote just last week. Hence, I wanted to refactor. While I was at it, Angular looked like the best fit for my programming style.
To address your concerns:
I think that it is more maintainable, since it encourages you to split things up. This, however, depends totally on your team and your discipline to keep things maintainable.
The Angular team definitely thought about testing when they were making it. Things are very easy to test, from unit testing to e2e testing. Others have even found a middle ground in between.
We use Jenkins at our Microsoft shop for continuous integration since it was easier for us to plug in our own programs to make it work with our complex environment setups. However, I don't think this relates much to which framework you decide to go with.
Coming from Visual Studio, I find JavaScript in general leaves something to be desired. I love edit and continue, unwinding the stack, and dragging that yellow arrow around. That stuff is just pure magical bliss. Debugging on the browser just doesn't give you all of that.
Security is pretty good. Looking through the docs, you can see that the team is concerned with security issues such as XSS and CSRF attacks. However, anything done over the browser is hard to secure. There are new attacks and bugs discovered every other day. If you are really concerned about security, you wouldn't have an online app. You would make sure that your customers only banked in the branch with multiple forms of ID. With that said, I don't think Angular is any less secure than any other JavaScript solution.
I would like to raise another issue with all of these JavaScript frameworks/libraries. They're all fairly new and constantly evolving. Look at how many functions JQuery has deprecated recently, and you'll get a sense of how hard it is to keep on top of your libraries. Many of these are also forgotten and left to rot. Angular being one of Google's products also makes me a little scared, since they have been cancelling waves of their projects. Hopefully, Angular does not become one of those.
The documentation is also lacking. Although the community is good, the documentation is not. Many pages are half done. Again, compared to the latest stuff from Microsoft, the documentation is pretty sparse.
This being one of the new things, it is harder to hire someone to help/take over this stuff.
Despite all these drawbacks, I really like it, and I'm definitely going to push my company towards adopting it.
Yes I have used Angular with Asp.net WebAPI along with MongoDB .Pls find my findings
1)Testability is absolutely fantatic .You can easily test you unit test using karma and jasmine
2) CI. Integration of Jenkins is available with Karma
3) Easy to debug similar to Javascript debugging can use chrome extension Bartrang to debug angular apps easily

Categories

Resources