4 ms·
Is Java Our Best Choice to Protect Our Code?
I’m an options trader with a strong background in R. My aim is to build a piece of software to be sold to funds and other traders. I was told some things by an ex-programmer friend of mine (he now outsources all his programming and merely manages his businesses) and wanted to check with a larger group whether he’s putting me on the right track.
So the general idea is that I need to create an interface for my customers. R doesn’t have a UI system, so I thought of using Python, as I heard it is similar to R. However, my friend said that Python software is easily reverse engineered, meaning my software could be stolen or copied, leaving me with fewer customers and new competitors.
He recommended Java for this reason. Specifically, to create a product that secures my backend (lol), he said I must learn Java IDE aka Eclipse and Java SDK. Two questions:
Is he right?
How large is the gap between R programming and Java programming?
I aim to create an MVP of the product before registering my business and showing the MVP to potential clients. Thus, I would like to estimate the timeline of the project. The actual coding should be fast and simple in R – mainly data input followed by correlation calculations and the output of a metric – but the time-consuming step, I figure, will be applying my R knowledge in the Java paradigm.
Thanks for reading this far.
- setra 10y agoAt the extreme end if a user runs something on their computer they can extract the algorithms. The only real way to prevent people from reverse engineering is running all meaningful code on your own hardware. Python is particularly easy to reverse engineer because you usually ship the source code which is then interpreted. They can read what you wrote literally. If you did a compiled variant this is not as bad. Java can be reverse engineered as the code is just in time compiled. For example minecraft modding communities would routinely extract the source code repack it with new features. There are always things you can do to make it harder (using a very optimized binary out of GCC with symbols stripped). But the general rule is, if you don't want them to have it, don't give it to them. Run it personally and give them a remote interface.
- clove 10y agoInteresting. How difficult would a remote interface be for someone like me create?
- setra 10y agoIf you have a super secret algorithm that you want to keep safe an okay programmer could make some server code to run it pretty easily (the protocol part, cant comment on your algorithm). Then you would write a GUI interface program in whatever language you want for the desktop that calls out to the server over TCP or something for the processing.
- clove 10y agoI am trying to hide the results of a professor (whom with I am working) that allows future stock price to be predicted from the input. That's only a concern before the research is published. Perhaps I am overthinking protecting my code? Am I?
- setra 10y agoWe are getting to a large number of posts for a HN thread. An actual conversation system would be easier if you have more questions. Email me at "anthracitelight@gmail.com" if you want to enter a chatroom.
- clove 10y agoAnother issue: If the software is to be sold as a yearly subscription, is it easier to run this remotely or can I actually sell an .exe that expires after a year?
- solidsnack9000 10y agoIt is definitely easier to control subscriptions by selling SaaS. A binary that expires in a year can be circumvented in various ways (how does it know what year it is now?) if it is valuable enough.
- setra 10y agoAs far as java vs R. Java is very common, and has a large number of libraries for building things like servers, and interfaces. It is probably faster computation wise as well. However if computation speed is not a major concern, and you are doing mostly statistic works, then switching to something you are not familiar with is probably not a good idea. Use the right tool depending on what you want. There is a reason so many statistics people use R / python, and not c.
- clove 10y agoIf R doesn't have the tools to offer a UI, how can I stick to R? Aren't I forced into a new language?
- setra 10y agoI honestly don't know much about the R library system. You could probably make a GUI in python pretty easily. Then write a basic server program that runs your R code when you get a processing request. The python app would then call the server which would run your R script. Depends on the domain of your project though really.
- brudgers 10y agoAfter seeing how companies build businesses based on open source software, I think: 1. Protecting the business is what matters. 2. The best way to leverage software is to create so much business value that reverse engineering your business is cost ineffective. The poster child is RedHat. It does not sell software really. It sells solutions. Any one of their customers can run another Linux distro. They don't. My advice: build it in R and start selling it (not necessarily in that order). Maybe a customer or two hires programmers to reverse engineer it. If you're making so much money you need a wheelbarrow to get it to the bank, it doesn't matter. Good luck.