Using semver to track changes to an algorithm in ruby [closed] - ruby-on-rails

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
I'm working for a retail company that is implementing an algorithm that determines which one of our warehouses to ship orders from. The logic is going do develop over time and we need to attach the logic version to the order so that our data team can evaluate which algorithm version is the most effective.
Our current code is in a very large rails application, but rather than put the algorithm in there, I'm thinking about building a small gem so the logic is self-contained and the version tagging is clear and easy to use for the data team. The rails logic would then look at the version of the gem and attach that to the order in the database.
One weakness of this approach is that it might be difficult to do concurrent A/B testing. In that case, it would make more sense to have a big class, and each iteration of the algorithm is a separate function, but I worry that someone might make a mistake and it compromises the validity of the data.
Which approach would be best for this problem? Is there another approach that would be better?

Related

Devise usable for large-scale 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 8 years ago.
Improve this question
out of interest - is devise usable for large scale applications (e.g. Groupon) or better write your own authentication?
yes..devise in used in many large scale applications...moreover it has nothing to do much about scaling as devise will only be used to handle signin/signout/email verification/password management etc which can be also reffered as ONE TIME CONFIGURATION.so even if there are million users...it wont affect your performance as you would be dealing with only one table users.Recenlty i used devise for an application of online students association involving more than 40k on weekly basis..thats a proof
Spree uses devise for authentication, so a lot of the big e-comerce sites are actually running on devise, we never had any issues with it with any of our clients with large user bases. I used other gems from Plataformatec as well, and they are pretty solid. Good luck with your project!

Is Erlang a good choice for a booking system backend? [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 need to write the backend for an event ticket selling system. Some companies would connect to the service in order to check for ticket availability in certain venues, book tickets and so on.
Reading about Erlang I though it could be a good choice since the system will have to support high concurrency, high availability but I don't know If it's a good choice for this problem domain.
Any help would be really appreciated. Thanks!
Erlang could be a good choice, yes, it sounds like something it would do a very good job.
But it's going to be hard for anyone here to be of much value for your decision, as you should also consider the knowledge level of the team, time & budget constraints, etc.
Ultimately, the best people to help you make this decision are the people in your team.
I suggest you take a look at OTP's finite state machines as I think it suits perfectly a ticket booking system.
I believe you can find a lot of examples either in the doc or on the web.

Do BDD/ATDD stories replace the need for traditional requirements? [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
From what I can tell from online forums and posts, one of the main focuses of BDD/ATDD seems to be on discussion and ensuring that the customer, developers, testers and other relevant parties are involved in the understanding what the system must do.
Question 1: Do BDD/ATDD stories replace the need for traditional requirement specifications, such as the those captured using the Volere Template?
Because the traditional requirement specifications are one of the key inputs for developers and testers, traditional requirement specifications tend to be comprehensive.
Question 2: Should BDD/ATDD stories also be comprehensive enough to allow a system to be fully tested?
Question 1: Instead of looking at this question as a black-and-white situation, we should better understand how these two requirements capture methods get along with each other. Writing a story in the BDD/ATDD methodologies, or in Scrum for example, does not imply removing the templates like volere off the table. If we take a look at the volere requirements specification here, we can see that most of the information regards to project-related issues, and the shell used for functional requirements is far from being different to a story. They just have different information, not exclusive one.
Question 2: Here we have the advantage coming from the methodology itself. BDD comes from TDD, we can more or less rely on the test-first oriented process to allow the team to test the system. But, as I mentioned in question 1, making a BDD/ATDD story more comprehensive is not a sin, and wouldn't compromise the general idea of the story. This would also prove useful when interacting with more experienced clients.

What stage to add authentication? [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'm about to start building a Rails app that will eventually need to vary CRUD access by user (i.e. which pages do they see, which can they edit, etc).
Is there a best stage of the development cycle to incorporate this?
Part of me feels like it should be the very first thing, since almost every piece of the interface will in some way rely on checking the user's ID, and it will be an inherent part of the DB structure.
Another part feels that this would overcomplicate things to start out with, and that I should instead build the core parts of the app, then layer on the authentication/authorization later.
Are there any best practices around this sort of thing?
I would say that if your system will rely on some kind of authentication... Why wait?
Let's say that you start developing your application without the authentication layer but at the same time you know that at some point you will have to do it. That means that at some point you will develop the authentication layer, and most likely you will have to refactor what you have already built to adapt it to this new layer.
Also, to try to convince you a little bit more...When you say:
I should instead build the core parts of the app
You should consider that the authentication module might be a core part of the app too...
I prefer to do it early, but you really have roughly the same amount of work in front of you regardless of when you do it. It really a matter of opinion on when you prefer to do it.

Learning New Skills and Keeping Up to Date: Advice on Memory Retention [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 3 years ago.
Improve this question
I'm having a difficult time retaining the programming skills I'm actively trying to learn in an effort to apply for a junior developer position.
What I'm finding is that I can easily master isolated topics (for example, details about how Java's Container classes work and the different ways to sort a given container), but I find that when I move on to new topics I forget maybe 80% of what I learned (a few months down the road).
Sure, with good notes, I can get back up to speed much more quickly, but my question to those of you who are already in the professional field - is this common (this constant need to re-learn things you once felt you'd never forget)? If so, how do you get around it? Should I accept that I'll probably only be an expert in the narrow domain that I currently use on a day to day basis?
My father always said:
You don't need to know everything, you
only need to know where to look it up
(roughly translated).
Going with your example, if you find you need to sort a collection very often you will remember after you've done it a few times, if you don't do it for a long time you will forget it again. That's perfectly normal imo.
So what I'm trying to say is there is no point in knowing stuff off the top of your head if you don't use it anyway as long as you know where you can look it up if you need it again.
I hope that made sense.

Resources