TripleA Logo TripleA Forum
    • TripleA Website
    • Categories
    • Recent
    • Popular
    • Users
    • Groups
    • Tags
    • Register
    • Login

    Student Group Studying TripleA

    Scheduled Pinned Locked Moved Development
    45 Posts 10 Posters 15.8k Views 10 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • B Online
      beelee @Lydia McCleary
      last edited by

      Hi @lydia-mccleary

      The lobby goes down sometimes. Rarely for more than a few hours. Dan probably give you a more detailed answer.

      1 Reply Last reply Reply Quote 0
      • LaFayetteL Offline
        LaFayette Admin @Lydia McCleary
        last edited by LaFayette

        @lydia-mccleary

        Has TripleA ever gone down?

        Yes. Though, in terms of availability, perhaps to some surprise it is quite high (out of the year, perhaps only a day or two of downtime). For better or worse, we do not measure the availability of the lobby, so a concrete answer is unavailable. Though, we are pretty quick to get reports about the lobby not being available, and there are not very many over the last 4 years. These are the ones I could find:

        https://github.com/triplea-game/triplea/issues/10804 < deployment configuration problem, lobby database password got out of sync with lobby application

        https://github.com/triplea-game/triplea/issues/9708 < regional issue relating to DNS resolution of our domain

        https://forums.triplea-game.org/topic/1239/where-is-the-lobby-down-topic < linode "maintenance" (note, the person was asking 'where is the lobby down' topic in order to be able to post about the lobby being down!)

        How long is TripleA's typical down time (either when changes are being committed or unintentional outages)?

        I think the events above were all hours. I'm not aware of any occasional blips in the software, generally downtimes are discrete events (rather than say the lobby crashing on a recurring basis)

        either when changes are being committed

        Lobby needs a restart to pick up updates. Last time we did this was almost 3 years ago (maybe more even, lobby is running v2.4). We can have users log into a new lobby now without downtime but there is no shared state between different lobby versions. Meaning, a player might be the first to rejoin into a new version of the lobby and be the only one there.

        For 2.6, we are pretty close to doing a lobby cut-over. It should be zero downtime. Some of this should play out in the near future. Happy to answer further questions.

        1 Reply Last reply Reply Quote 0
        • J Offline
          jtkenny @LaFayette
          last edited by

          @lafayette Sorry about the delayed response, we have been very busy with exams and writing an essay.

          I ran the script you gave and it started the database, but I was still unable to run the verify script because it seemed to stop and then try to start the database again.

          On another note, I left a comment on the issue we were going to start on. Is there a particular naming convention I should use for the branch we make for the PR?

          LaFayetteL 1 Reply Last reply Reply Quote 0
          • LaFayetteL Offline
            LaFayette Admin @jtkenny
            last edited by

            @jtkenny More details on what is happening with the script would be helpful. Perhaps if you could add a 'set -x' to the top and then provide the output, it might be easier to debug what is happening. The verify script does start by dropping database data and then resetting it up for a 'clean' state. So that sounds consistent. It also sounds like the database is also able to start, which does leave me wondering where the verify script is terminating and/or going wrong.

            It's pretty important for efficient development to be able to run PR build checks locally. This allows a person to do local debugging and more efficient iterations in tracking down problems. Not being able to run all of those build checks locally is a concern, as that should work. It implies we need to fix something so that it works and allows anyone to reproduce the PR build checks locally.

            Is there a particular naming convention I should use for the branch we make for the PR?

            Nope. The commit message is the important part, this link gives good outlines of how to write a good commit message: https://www.freecodecamp.org/news/how-to-write-better-git-commit-messages/

            J 1 Reply Last reply Reply Quote 0
            • J Offline
              jtkenny @LaFayette
              last edited by

              @lafayette Here is the terminal output when I try to run the script (with set -x):
              2f56c40b-919f-4cf6-ac8d-6ecf8216c058-image.png
              The strange part is that Docker shows the server running, so I'm not sure why it aborts startup.
              70176582-a86c-4504-9b9b-ccef5e713aed-image.png

              LaFayetteL 1 Reply Last reply Reply Quote 0
              • LaFayetteL Offline
                LaFayette Admin @jtkenny
                last edited by LaFayette

                @jtkenny Thanks for the output. It's odd to see the 'git-rev-parse' stuff in there. The 'timed out' part is not good. What follows I can't really explain as I would expect a 'gradle' command to be the next thing to launch.

                FWIW, I recently wiped my dev setup and am working from a clean install and have reproduced some of these problems.

                When running the start docker command [1] on its own, I get a "image cannot be stopped warning". Seemingly the 'stopping database' step is not stopping the database properly.

                If I comment out the 'start-docker-database' step in verify [2], then I do see tests kick off but many happen in parallel. This is not good since the tests that interact with database step on each others toes when deleting and setting up database data . So I then ran into various "table not found" errors when running tests

                In the short term we'll probably need to disable the steps that run with a database. In the medium term there is an experiment with going 'multi-repo' (https://github.com/triplea-game/triplea/issues/11204) that would help this situation. Specifically if the lobby and its database wind up in their own repository, then our verification script becomes simpler and no longer needs to fire up a database. In turn, the lobby repo can have an explicit config to run tests in serial.

                [1]

                docker run \
                   --rm -d \
                   --name="database" \
                   -e "POSTGRES_PASSWORD=postgres" \
                   -p "5432:5432" \
                   -v "$(pwd)/$(dirname "$0")/sql/init/:/docker-entrypoint-initdb.d/" \
                   "postgres:10"
                

                [2] verify:29 ./gradlew --parallel spotlessApply check -x $DATABASE_TESTS \

                J 2 Replies Last reply Reply Quote 2
                • J Offline
                  jtkenny @LaFayette
                  last edited by

                  @lafayette Okay, just let me know what tests I should run or how to disable the database tests and I will make sure we get those run on our code.

                  1 Reply Last reply Reply Quote 0
                  • J Offline
                    jtkenny @LaFayette
                    last edited by

                    @lafayette I am trying to make anew branch to put our changes in, but it seems like I don't have the permissions to push a new branch, do these need to be granted to me in some or is there a different way I should go about making a new branch?
                    dc645373-fb3d-498a-9801-372b58d20258-image.png

                    TheDogT LaFayetteL 2 Replies Last reply Reply Quote 1
                    • TheDogT Offline
                      TheDog @jtkenny
                      last edited by TheDog

                      @jtkenny

                      Oh, oh, oh Im almost excited, your first PR is awaiting approval. ๐Ÿ˜

                      Zoom in & Out % is another quick win request;
                      2.6 can zoom In & Out, it would be good to show, when Zooming, that percentage on the right-ish of the status bar for say 3 seconds and then disappear, that is giving back the valuable status bar space.

                      Technology grid panel, another request?
                      To remove the Tech grid from the Players tab, so more nations can be displayed without scrolling to see the Alliance totals for Economic Victory or VC Victory.

                      The grid could then be accessed via a menu item, maybe ctrl+T ?
                      It would look a little like the ctrl+W Politics panel, flags and nation name for the X axis and Tech name for the Y axis. Maybe for researched, a cell would have a green background and a tick?

                      fcfc2e08-41df-4c13-8c5b-46d18762008b-image.png

                      https://forums.triplea-game.org/tags/thedog
                      https://forums.triplea-game.org/topic/3741/curated-best-top-maps-triplea-guides

                      TheDogT 1 Reply Last reply Reply Quote 2
                      • TheDogT Offline
                        TheDog @TheDog
                        last edited by TheDog

                        @jtkenny
                        Here is another UI request?

                        5531104e-0e84-46d8-83b9-34b1cdfbd733-image.png

                        It would really nice to have a centre button (to centre on the territory) against each one.
                        Currently you have to faff about to find the territory from the menu.

                        There are lots of other little UI tweaks, so pick the ones you would like to do.

                        https://forums.triplea-game.org/tags/thedog
                        https://forums.triplea-game.org/topic/3741/curated-best-top-maps-triplea-guides

                        1 Reply Last reply Reply Quote 1
                        • aardvarkpepperA Offline
                          aardvarkpepper @LaFayette
                          last edited by

                          @lafayette said in Student Group Studying TripleA:

                          Change how game data works and save-games work so that we have 'game-change-deltas' which stack on top of each other. Right now 'GameData.java' is a god class that maintains the current game state and when the game is saved, this is serialized to disk (via java serialization). 'GameData.java' represents the latest in game-state. Instead of this, we would want to have as a starting point a map (which can then have its data loaded on-demand) and a series of game-change objects. From this we could re-create the latest game state by using the map data as a starting point and then applying the game-deltas.

                          I'd like to know more about this, the "why", what other alternatives were considered (and why they were rejected), and how the original implementation writers may be contacted to inquire why things were implemented as they originally were.

                          LaFayetteL 1 Reply Last reply Reply Quote 0
                          • LaFayetteL Offline
                            LaFayette Admin @jtkenny
                            last edited by LaFayette

                            @jtkenny Apologies for not being super attentive. I was a bit burned out & did not have much time for TripleA over the last few months. I hope beyond this rare weekend day that I'll be able to be a bit more active. It is hard to say given there are some big things coming up in the spring/summer for me.. So, we'll see.

                            Re: pushing branches

                            That is something of the github access model. You need to fork the repository first. That gives you a forked repo where you will have write permissions (so you can create new branches). Once you've done that, you'll be able to head to that repository and github gives you a link on the forked repository main page where you can create a pull request.

                            EG: https://github.com/DanVanAtta/triplea

                            There is a lot of well written documentation on this workflow available. We really would benefit to update our dev setup notes for new contributors to have some comments like "to learn more about how to push pull requests & create a fork, see these links: ... "

                            Tests & modularization

                            I don't think the multi-repo approach is going to solve things quite as well as I had hoped. You can learn more details by reading the small dissertations written at: Code Structure - Organization into a "Many Repo" (Breaking up the monorepo) #11204

                            Though, it still remains a problem that build & verification times are slow and too broad. I am not happy that everyone needs to install a docker to be able to contribute anything. While docker for a local database is a great thing, it does raise the barrier to entry. I really want to lower the barrier to entry, it's too great and there is too much to do.

                            Semester / Team Status

                            Is the semester for your team over @jtkenny ? Where do things sit? Can we be of help? If so, how?

                            J 1 Reply Last reply Reply Quote 0
                            • LaFayetteL Offline
                              LaFayette Admin @aardvarkpepper
                              last edited by LaFayette

                              @aardvarkpepper Oomph, I was very loathe to spend 3 hours typing & documenting TripleA stuff today, but here I am.. What you asked is a fair question, though I think the conversation has been spread out over time & topics. I can't find a good single thread to answer your question.

                              Please see:

                              • https://forums.triplea-game.org/topic/3390/rfc-save-games-as-game-deltas
                              • https://forums.triplea-game.org/topic/3389/how-to-organize-feature-requests-projects
                              • https://forums.triplea-game.org/topic/2794/triplea-3-0-design-proposal-discussion
                              aardvarkpepperA 1 Reply Last reply Reply Quote 1
                              • aardvarkpepperA Offline
                                aardvarkpepper @LaFayette
                                last edited by

                                @lafayette

                                Thanks!

                                1 Reply Last reply Reply Quote 0
                                • J Offline
                                  jtkenny @LaFayette
                                  last edited by

                                  @lafayette Sorry for my absence, I have been in Europe for the last three weeks. over our winter break. Our semester is over, so most likely no one else from my team will continue working. I may continue working on the issue I have been working on, but I have no idea how much time I can commit because my semester will be really busy. Nevertheless, thank you all so much for your help and assistance in working with us. We have all learned a lot about open source contributions over the semester.

                                  LaFayetteL B 2 Replies Last reply Reply Quote 2
                                  • LaFayetteL Offline
                                    LaFayette Admin @jtkenny
                                    last edited by LaFayette

                                    @jtkenny Understood, thanks for the update. TripleA is deceptively hard to work on, and it's been a tough journey to make that easier. I hear you on the lack of time = D [cue: maniacal laughter]

                                    FWIW, I've previously taken time off from full time employment on a few occasions in order to be able to better contribute to TripleA. I've also sometimes been in the habit of allowing some months to go by between jobs (generally when I was contracting) and those were ideal time slots for working on TripleA. I totally understand it can be hard to carve out time, and I've been struggling with that for most of this last year. I think overall it is a bit of a lesson in the value of trying to finish what you've started and not leaving things half done. It's also the case that software efforts almost always take far more effort than anyone would want or can predict.

                                    Also FWIW, open source work is really valuable experience, it's arguably better than industry experience in a lot of ways (and can be a really good resume builder too!) When I took a full 6 months off from work once and spent 3 months full time on Triplea, I learned more in that 3 months than I had in 2 years while in industry. Industry can be great for learning, but typically once you spend 2 months learning something in industry, you keep at that same thing for many months (if not years) afterwards. In open source, once you got something down, you can choose to move onto a different topic, and generally just get a lot of breadth. Specifically, you can choose your open source efforts to help guide your personal growth - that is really valuable.

                                    CS educations are really valuable in general too, but they do lack practical skills education. I think generally most CS programs assume you'll learn those skills as needed. Nonetheless, it's good to have a test bed for learning how to manage branches, setting up a github account, and just the overall nitty gritty experience working in existing code bases. 99.9% of software engineering is dealing with existing code bases. Further, there is little that replaces raw experience. The learning progress is often:

                                    • learn a principle
                                    • apply the principle always
                                    • learn why the principle is good
                                    • learn when the principle is not good and when not to apply the principle.

                                    That kinda goes for things like DRY & TDD. If you do enough TDD, eventually you learn what test-able code looks like. This allows for some testing to be done after-the-fact. That is really valuable when experimenting around, and you learn which modules you will want to test first and which you want to test later. Similar for DRY, at first any duplication is moved into an abstraction. Eventually you learn when abstractions are worse than duplication. Nonetheless, many aspects of software engineering are a progression and the steps are not easily skipped. Worse yet, journeyman fallacy (AKA Dunning-Kruger effect) can easily come into play. Open source is maybe one of the best ways to defeat the Dunning-Kruger effect in software engineering and to keep leveling your skills.

                                    Just some personal thoughts for your group. We would love to see more active contributors and this can be a really good hobby project, particularly if any of you are considering a career in Java back-end engineering. Regardless, it was really cool to see your group choose TripleA, cheers!

                                    Captain CrunchC 1 Reply Last reply Reply Quote 4
                                    • Captain CrunchC Offline
                                      Captain Crunch Banned @LaFayette
                                      last edited by

                                      @lafayette the Dunningโ€“Kruger effect lol so true I often underestimate my skills in various areas ๐Ÿ˜œ

                                      1 Reply Last reply Reply Quote 0
                                      • B Online
                                        beelee @jtkenny
                                        last edited by

                                        Thanks again @jtkenny for you and your groups contribution. Hopefully will be added soon with the next release.

                                        Any thoughts of encouraging following students to continue your Groups Work ? Maybe the teacher or professor could recommend ?

                                        Actually, encouraging All student groups across the Nation and the World as a whole would be ideal ๐Ÿ™‚ but sticking with ISU for now, would be cool to see student interaction continue.

                                        Once again, Thanks to you and your Group ๐Ÿ™‚

                                        1 Reply Last reply Reply Quote 0

                                        Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                        Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                        With your input, this post could be even better ๐Ÿ’—

                                        Register Login
                                        • 1
                                        • 2
                                        • 3
                                        • 2 / 3
                                        • First post
                                          Last post
                                        Copyright ยฉ 2016-2018 TripleA-Devs | Powered by NodeBB Forums