Author

Topic: My Own Personalized Merit calculator (Read 339 times)

sr. member
Activity: 1820
Merit: 436
Catalog Websites
February 07, 2020, 12:29:31 PM
#20
The math/code behind it is really simple. I believe everyone should prefer a web app rather than an executable app. You visit the website, do your thing, and closes it. Downloading things online is a whole different thing and it's way riskier than a simple HTML javascript page. I suggest that you go this way rather than going with the desktop apps.

There is no need to learn node or angular for this particular calculator. Just search for the basic javascript: how to take data from an input, how to calculate, how to render the output.


Agree, I think having a website would be less hassle in opening it and could be more accessible for more people here in the forum. Also less risky for most of the people because they don't need to download it and also your gonna need to update it or maintain it over time it will also be a hassle if it is in the application form.

But the idea in your application is great and I think it could be useful for a lot of users in the forum and even for newbies.
hero member
Activity: 2254
Merit: 537
My passive income eBook @ tinyurl.com/PIA10
February 07, 2020, 12:09:18 PM
#19
I'm sorry, it is for windows PC only, I forgot to indicate.

I hope I could develop IOS applications too in the future so that it could support multi platform operating system as well. Though, if you have time to use a windows PC, then feel free to use it anyway. It is free from virus or you might want to scan it first before running it. Thank you.

No worries, I'll test it on my PC once it's repaired. Until then, I've to stick with my trusty mobile device Cheesy
sr. member
Activity: 644
Merit: 364
In Code We Trust
February 07, 2020, 10:14:30 AM
#18
The math/code behind it is really simple. I believe everyone should prefer a web app rather than an executable app. You visit the website, do your thing, and closes it. Downloading things online is a whole different thing and it's way riskier than a simple HTML javascript page. I suggest that you go this way rather than going with the desktop apps.

There is no need to learn node or angular for this particular calculator. Just search for the basic javascript: how to take data from an input, how to calculate, how to render the output.

I've just had a background with the node and angular, wherein, the application could be available to mobile devices and it adopts to almost every phones available in the market depending on its size. So, unlike developing a web based application, maybe it could be possible to implement it platform independently using node and angular and ionic.

- By the way, I am just starting to learn to code, I might now be able to do it right now, may be soon, we could integrate knowledge to better help our forum grow.
legendary
Activity: 2758
Merit: 6830
February 07, 2020, 10:04:44 AM
#17
The math/code behind it is really simple. I believe everyone should prefer a web app rather than an executable app. You visit the website, do your thing, and closes it. Downloading things online is a whole different thing and it's way riskier than a simple HTML javascript page. I suggest that you go this way rather than going with the desktop apps.

There is no need to learn node or angular for this particular calculator. Just search for the basic javascript: how to take data from an input, how to calculate, how to render the output.

An super quick example of what it would look like (the start of it):
Code:

  
  
  



  Current Rank: a
  Next Rank: a



hero member
Activity: 2982
Merit: 610
February 07, 2020, 07:58:30 AM
#16
I like to try but when I need to download to use it, I am quite hesitant as as much as possible I don't want to install apps in my laptop where my information about my wallets are stored. If you have a site where we can visit, that would be better IMO. (anyway good work as your intention is good).
legendary
Activity: 2450
Merit: 1140
duelbits.com
February 07, 2020, 06:17:09 AM
#15
It will work for all ranks, but the idea is just that, I merely think of higher level members to use this application as they could just compute it themselves.~~
Okay, I understood. Actually, I like the idea, indeed it will be very helpful. You are correct, for higher ranks, they possibly have many ways to count merits. But don't worry, some may try to use this one as it is easy to use.  Wink

~~I couldn't really force everyone to download so just try it with your own risk.~~
Sure. That's why it will be better if everyone can use it directly without the need to download it first. You may plan it later, but it is just a suggestion. As the app is just made 3 hours ago, surely the performance is well enough so far.
sr. member
Activity: 644
Merit: 364
In Code We Trust
February 07, 2020, 05:03:48 AM
#14
Side note: Here’s a fun but tough idea to do at some point: Project the profiles next ranking-up date (roughly).

I could add the algorithm of importing date and time to compute the projected ranking up date of a user, though, the idea is that, not all users could be consistent to make it possible and the downside of me (not adding it) is that, I have missed the possibilities of adding up motivation to the users.
By the way, thank you for the idea of concatenating using 'and's'.

Does this app work for newbies only? You can see above, I have tried it and seemed working properly. So far, I assume quite good but maybe you need to add more features. Anyway, can you explain how accurate this app to count merits and activity? And how safe to use this app?

It will work for all ranks, but the idea is just that, I merely think of higher level members to use this application as they could just compute it themselves. - In terms of being safe to use this app, I just build the program 3 hours ago and the only platform it went is google drive. I highly advice to still use an antivirus or malware to make sure you guys are safe.

But when you downloaded it and there's nothing bad happens to your computer, I would be glad that you share it to others (thinking of the fact that exe is really doubtful). I couldn't really force everyone to download so just try it with your own risk.
legendary
Activity: 2450
Merit: 1140
duelbits.com
February 07, 2020, 04:23:44 AM
#13
My Account

I've just think of ways how newbies could easily calculate the required activities and ranks they need to obtain in order to rank up.~~
Does this app work for newbies only? You can see above, I have tried it and seemed working properly. So far, I assume quite good but maybe you need to add more features. Anyway, can you explain how accurate this app to count merits and activity? And how safe to use this app?
legendary
Activity: 2338
Merit: 10802
There are lies, damned lies and statistics. MTwain
February 07, 2020, 04:09:32 AM
#12
I can’t bring myself to downloading and executing an executable file on principle to try it out, and that is going to be the norm I figure. Consequently, I won’t merit the OP, but rather the code instead, which is clean and structured (I personally would have concatenated outer and inner ifs with ands, but that’s just me).

Side note: Here’s a fun but tough idea to do at some point: Project the profiles next ranking-up date (roughly). That’s a toughie, and will only be likely precise for those whose earned Merits are well above their activity counter. For those in the opposite scenario (the majority), you need to make the projection based on past post/activity/merits over the last few months. This will not be precise, as merits streaks come and go and are not linear, but it’s entertaining to do. I gave it a go some time ago (I won’t retake it now) and kept the details privately.
legendary
Activity: 2240
Merit: 3150
₿uy / $ell ..oeleo ;(
February 07, 2020, 03:53:57 AM
#11
the idea is good and there will be enough people with interest Smiley
but you should consider doing it online or using other technology.
the download of an executable file is nowadays a (good!) reason to distance yourself from the service... much too risky.
nothing against you but fortunately the users are getting more and more careful and an .exe (from unknown source) always looks dangerous.

Thanks for the reminder, soon I might as well try to study and use node, angular and javascript, in order for me to develop easily accessible application which is multi platform and web based. But i couldn't force everyone to download because, I myself know that exe files are less secured, though, I don't have any option yet.

I used google spreadsheets for mine when I had the time to do the calculator, and is quite OK. People tend to trust google a bit more than some anonymous guy on internet asking them to install a shady program on their PCs, all done with "good" intentions.
Especially in the crypto field where most of the people have their wallets on the same pcs/phones as they are using to browse the forum/internet you can't expect no matter how friendly they can be, that they will trust you. I'm sure at least 95% of all the users here have been scammed one way or another and they have learned their lesson. The other 5% have a bit more common sense Wink
sr. member
Activity: 644
Merit: 364
In Code We Trust
February 07, 2020, 03:08:26 AM
#10
the idea is good and there will be enough people with interest Smiley
but you should consider doing it online or using other technology.
the download of an executable file is nowadays a (good!) reason to distance yourself from the service... much too risky.
nothing against you but fortunately the users are getting more and more careful and an .exe (from unknown source) always looks dangerous.

Thanks for the reminder, soon I might as well try to study and use node, angular and javascript, in order for me to develop easily accessible application which is multi platform and web based. But i couldn't force everyone to download because, I myself know that exe files are less secured, though, I don't have any option yet.
staff
Activity: 2548
Merit: 2709
Join the world-leading crypto sportsbook NOW!
February 07, 2020, 02:53:00 AM
#9
the idea is good and there will be enough people with interest Smiley
but you should consider doing it online or using other technology.
the download of an executable file is nowadays a (good!) reason to distance yourself from the service... much too risky.
nothing against you but fortunately the users are getting more and more careful and an .exe (from unknown source) always looks dangerous.
legendary
Activity: 3696
Merit: 2219
💲🏎️💨🚓
February 07, 2020, 02:50:57 AM
#8
At the moment, It doesn't have a calculation for the potential activities of the users, but I could add it soon as I learn deeper from the system. I would be glad to upload the source code as well. So you guys could develop some applications too like this.

Thanks for the almost instant reply - most of my online time is done via PC.  Sadly my days of html are far behind me as is my limited programming kills.
sr. member
Activity: 644
Merit: 364
In Code We Trust
February 07, 2020, 02:49:01 AM
#7
Thanks for taking the time to create this app.

Will there be a website for ease of use?

Also, does your app calculate potential activity?  There was a website a few years back that calculated potential activity (admittedly to put a dollar value on UID's that were then offered up for sale), however it's interesting to see what potential activity some lower end users have especially if they have a sudden burst of activity and climb the activity ladder.

At the moment, It doesn't have a calculation for the potential activities of the users, but I could add it soon as I learn deeper from the system. I would be glad to upload the source code as well. So you guys could develop some applications too like this.

Code:
namespace MeritCalculator
{
    ///
    /// Interaction logic for Result.xaml
    ///

    public partial class Result : Window
    {
        int act;
        int mer;
        int act1;
        int mer1;
        List items = new List();
        public Result(int activities, int merits)
        {
            act = activities;
            mer = merits;
            InitializeComponent();
            executeEvaluation(act, mer);
            items.Add(new user() { Rank = "Brand New" , RequiredActivities = (0 - act1).ToString(), RequiredMerits=(0 - mer1).ToString()});
            items.Add(new user() { Rank = "Newbie", RequiredActivities = (1 - act1).ToString(), RequiredMerits = (0 - mer1).ToString() });
            items.Add(new user() { Rank = "Jr. Member", RequiredActivities = (30 - act1).ToString(), RequiredMerits = (1 - mer1).ToString() });
            items.Add(new user() { Rank = "Member", RequiredActivities = (60 - act1).ToString(), RequiredMerits = (10 - mer1).ToString() });
            items.Add(new user() { Rank = "Full Member", RequiredActivities = (120 - act1).ToString(), RequiredMerits = (100 - mer1).ToString() });
            items.Add(new user() { Rank = "Sr. Member", RequiredActivities = (240 - act1).ToString(), RequiredMerits = (250 - mer1).ToString() });
            items.Add(new user() { Rank = "Hero Member", RequiredActivities = (480 - act1).ToString(), RequiredMerits = (500 - mer1).ToString() });
            items.Add(new user() { Rank = "Legendary", RequiredActivities = (775 - act1).ToString(), RequiredMerits = (1000 - mer1).ToString() });
            source.ItemsSource = items;
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            System.Windows.Application.Current.Shutdown();
        }
        public void executeEvaluation(int act2, int mer2)
        {
            this.act1 = act2;
            this.mer1 = mer2;
            tbCurrMerit.Text = mer1.ToString();
            tbCurrActivities.Text = act1.ToString();
            if (mer1 == 0)
            {
                if (act1 == 0)
                {
                    tbCurrRank.Text = "Brand New";
                    tbNextRank.Text = "Newbie";
                    tbMeritsRequired.Text = (0 - mer1).ToString();
                    tbActivitiesRequired.Text = (0 - act1).ToString();
                }
                if (act1 > 0)
                {
                    tbCurrRank.Text = "Newbie";
                    tbNextRank.Text = "Jr. Member";
                    tbMeritsRequired.Text = (1 - mer1).ToString();
                    tbActivitiesRequired.Text = (30 - act1).ToString();
                }
            }
            if (mer1 > 0 && mer1 < 10)
            {
                if (act1 > 0 && act1 < 30)
                {
                    tbCurrRank.Text = "Newbie";
                    tbNextRank.Text = "Jr. Member";
                    tbMeritsRequired.Text = (1 - mer1).ToString();
                    tbActivitiesRequired.Text = (30 - act1).ToString();
                }
                if (act1 > 29)
                {
                    tbCurrRank.Text = "Jr. Member";
                    tbNextRank.Text = "Member";
                    tbMeritsRequired.Text = (10 - mer1).ToString();
                    tbActivitiesRequired.Text = (60 - act1).ToString();
                }
            }
            if (mer1 > 9 && mer1 < 100)
            {
                if (act1 > 0 && act1 < 30)
                {
                    tbCurrRank.Text = "Newbie";
                    tbNextRank.Text = "Jr. Member";
                    tbMeritsRequired.Text = (1 - mer1).ToString();
                    tbActivitiesRequired.Text = (30 - act1).ToString();
                }
                if (act1 > 29 && act1 < 60)
                {
                    tbCurrRank.Text = "Jr. Member";
                    tbNextRank.Text = "Member";
                    tbMeritsRequired.Text = (10 - mer1).ToString();
                    tbActivitiesRequired.Text = (60 - act1).ToString();
                }
                if (act1 > 59)
                {
                    tbCurrRank.Text = "Member";
                    tbNextRank.Text = "Full Member";
                    tbMeritsRequired.Text = (100 - mer1).ToString();
                    tbActivitiesRequired.Text = (120 - act1).ToString();
                }
            }
            if (mer1 > 99 && mer1 < 250)
                {
                    if (act1 > 0 && act1 < 30)
                    {
                        tbCurrRank.Text = "Newbie";
                    tbNextRank.Text = "Jr. Member";
                    tbMeritsRequired.Text = (1 - mer1).ToString();
                    tbActivitiesRequired.Text = (30 - act1).ToString();
                }
                    if (act1 > 29 && act1 < 60)
                    {
                        tbCurrRank.Text = "Jr. Member";
                    tbNextRank.Text = "Member";
                    tbMeritsRequired.Text = (10 - mer1).ToString();
                    tbActivitiesRequired.Text = (60 - act1).ToString();
                }
                    if (act1 > 59 && act1 < 120)
                    {
                        tbCurrRank.Text = "Member";
                    tbNextRank.Text = "Full Member";
                    tbMeritsRequired.Text = (100 - mer1).ToString();
                    tbActivitiesRequired.Text = (120 - act1).ToString();
                }
                    if (act1 > 119)
                    {
                        tbCurrRank.Text = "Full Member";
                    tbNextRank.Text = "Sr. Member";
                    tbMeritsRequired.Text = (250 - mer1).ToString();
                    tbActivitiesRequired.Text = (240 - act1).ToString();
                }
                }
            if (mer1 > 249 && mer1 < 500)
                {
                    if (act1 > 0 && act1 < 30)
                    {
                        tbCurrRank.Text = "Newbie";
                    tbNextRank.Text = "Jr. Member";
                    tbMeritsRequired.Text = (1 - mer1).ToString();
                    tbActivitiesRequired.Text = (30 - act1).ToString();
                }
                    if (act1 > 29 && act1 < 60)
                    {
                        tbCurrRank.Text = "Jr. Member";
                    tbNextRank.Text = "Member";
                    tbMeritsRequired.Text = (10 - mer1).ToString();
                    tbActivitiesRequired.Text = (60 - act1).ToString();
                }
                    if (act1 > 59 && act1 < 120)
                    {
                        tbCurrRank.Text = "Member";
                    tbNextRank.Text = "Full Member";
                    tbMeritsRequired.Text = (100 - mer1).ToString();
                    tbActivitiesRequired.Text = (120 - act1).ToString();
                }
                    if (act1 > 119 && act1 < 240)
                    {
                        tbCurrRank.Text = "Full Member";
                    tbNextRank.Text = "Sr. Member";
                    tbMeritsRequired.Text = (250 - mer1).ToString();
                    tbActivitiesRequired.Text = (240 - act1).ToString();
                }
                    if (act1 > 239)
                    {
                        tbCurrRank.Text = "Sr. Member";
                    tbNextRank.Text = "Hero Member";
                    tbMeritsRequired.Text = (500 - mer1).ToString();
                    tbActivitiesRequired.Text = (480 - act1).ToString();
                }
                }
            if (mer1 > 499 && mer1 < 1000)
                {
                    if (act1 > 0 && act1 < 30)
                    {
                        tbCurrRank.Text = "Newbie";
                    tbNextRank.Text = "Jr. Member";
                    tbMeritsRequired.Text = (1 - mer1).ToString();
                    tbActivitiesRequired.Text = (30 - act1).ToString();
                }
                    if (act1 > 29 && act1 < 60)
                    {
                        tbCurrRank.Text = "Jr. Member";
                    tbNextRank.Text = "Member";
                    tbMeritsRequired.Text = (10 - mer1).ToString();
                    tbActivitiesRequired.Text = (60 - act1).ToString();
                }
                    if (act1 > 59 && act1 < 120)
                    {
                        tbCurrRank.Text = "Member";
                    tbNextRank.Text = "Full Member";
                    tbMeritsRequired.Text = (100 - mer1).ToString();
                    tbActivitiesRequired.Text = (120 - act1).ToString();
                }
                    if (act1 > 119 && act1 < 240)
                    {
                        tbCurrRank.Text = "Full Member";
                    tbNextRank.Text = "Sr. Member";
                    tbMeritsRequired.Text = (250 - mer1).ToString();
                    tbActivitiesRequired.Text = (240 - act1).ToString();
                }
                    if (act1 > 239 && act1 < 480)
                    {
                        tbCurrRank.Text = "Sr. Member";
                    tbNextRank.Text = "Hero Member";
                    tbMeritsRequired.Text = (500 - mer1).ToString();
                    tbActivitiesRequired.Text = (480 - act1).ToString();
                }
                    if (act1 > 479)
                    {
                        tbCurrRank.Text = "Hero Member";
                    tbNextRank.Text = "Legendary";
                    tbMeritsRequired.Text = (1000 - mer1).ToString();
                    tbActivitiesRequired.Text = (775 - act1).ToString();
                }     
                }
            if (mer1 > 1000)
            {
                if (act1 > 0 && act1 < 30)
                {
                    tbCurrRank.Text = "Newbie";
                    tbNextRank.Text = "Jr. Member";
                    tbMeritsRequired.Text = ("N/A");
                    tbActivitiesRequired.Text = (30 - act1).ToString();
                }
                if (act1 > 29 && act1 < 60)
                {
                    tbCurrRank.Text = "Jr. Member";
                    tbNextRank.Text = "Member";
                    tbMeritsRequired.Text = ("N/A");
                    tbActivitiesRequired.Text = (60 - act1).ToString();
                }
                if (act1 > 59 && act1 < 120)
                {
                    tbCurrRank.Text = "Member";
                    tbNextRank.Text = "Full Member";
                    tbMeritsRequired.Text = ("N/A");
                    tbActivitiesRequired.Text = (120 - act1).ToString();
                }
                if (act1 > 119 && act1 < 240)
                {
                    tbCurrRank.Text = "Full Member";
                    tbNextRank.Text = "Sr. Member";
                    tbMeritsRequired.Text = ("N/A");
                    tbActivitiesRequired.Text = (240 - act1).ToString();
                }
                if (act1 > 239 && act1 < 480)
                {
                    tbCurrRank.Text = "Sr. Member";
                    tbNextRank.Text = "Hero Member";
                    tbMeritsRequired.Text = ("N/A");
                    tbActivitiesRequired.Text = (480 - act1).ToString();
                }
                if (act1 > 479 && act1 < 775)
                {
                    tbCurrRank.Text = "Hero Member";
                    tbNextRank.Text = "Legendary";
                    tbMeritsRequired.Text = ("N/A");
                    tbActivitiesRequired.Text = (775 - act1).ToString();
                }
                if (act1 > 774)
                {
                    tbCurrRank.Text = "Legendary";
                    tbNextRank.Text = "N/A";
                    tbMeritsRequired.Text = "N/A";
                    tbActivitiesRequired.Text = "N/A";
                }

            }
        }
        public class user
        {
            public string Rank { get; set; }
            public string RequiredActivities { get; set; }
            public string RequiredMerits { get; set; }
        }
     
    }
}

sr. member
Activity: 644
Merit: 364
In Code We Trust
February 07, 2020, 02:46:00 AM
#6
Darn, it shows "Unsupported file type" when accessing it on Google Drive (iOS).



I'm sorry, it is for windows PC only, I forgot to indicate.

I hope I could develop IOS applications too in the future so that it could support multi platform operating system as well. Though, if you have time to use a windows PC, then feel free to use it anyway. It is free from virus or you might want to scan it first before running it. Thank you.
legendary
Activity: 3612
Merit: 5297
https://merel.mobi => buy facemasks with BTC/LTC
February 07, 2020, 02:44:42 AM
#5
I'm not a big fan of running executables from somebody i don't know on my work pc (the only pc i "own" that uses windows as an OS).
Will you be releasing the sourcecode for peer review?
legendary
Activity: 3696
Merit: 2219
💲🏎️💨🚓
February 07, 2020, 02:43:10 AM
#4
Thanks for taking the time to create this app.

Will there be a website for ease of use?

Also, does your app calculate potential activity?  There was a website a few years back that calculated potential activity (admittedly to put a dollar value on UID's that were then offered up for sale), however it's interesting to see what potential activity some lower end users have especially if they have a sudden burst of activity and climb the activity ladder.
hero member
Activity: 2254
Merit: 537
My passive income eBook @ tinyurl.com/PIA10
February 07, 2020, 02:42:56 AM
#3
Darn, it shows "Unsupported file type" when accessing it on Google Drive (iOS).

legendary
Activity: 3374
Merit: 1824
February 07, 2020, 02:38:40 AM
#2
Very good application,  it will help newbie.
You did very good job,  congratulation.
I hope admins can put your post on the top.
sr. member
Activity: 644
Merit: 364
In Code We Trust
February 07, 2020, 02:34:12 AM
#1
Good day to everyone!

I've just think of ways how newbies could easily calculate the required activities and ranks they need to obtain in order to rank up. Basically, I've also became one of them before, that is why I've came up to an idea based from the information provided by hilariousandco regarding the merit system and ranking. In addition, I am inspired by DireWolfM14 regarding his topic.

I'm new to programming and I need to practice in order to improve, so I made my personalized merit calculator. This time, I used C# using visual studio WPF and added a bit of feature and UI.


In here, you just need to enter the number of activities you have, and the current merits you've obtained. After the first step, just click "Start"

As you can see, information such as 'Next Rank', 'Activities Required', and 'Merits Required' are shown. the negative number means that you've already reached the needed amount of merit/activities.

If you have a time, you can freely use my app: here

You might want to visit this topic to better understand how the merit and ranking system works: https://bitcointalksearch.org/topic/faq-everything-you-need-to-know-about-forum-activity-account-ranks-and-merit-2766177
Jump to: