Student Group Studying TripleA
-
@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?
-
@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/
-
@lafayette Here is the terminal output when I try to run the script (with set -x):

The strange part is that Docker shows the server running, so I'm not sure why it aborts startup.

-
@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 testsIn 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 \ -
@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.
-
@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?

-
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?
-
@jtkenny
Here is another UI request?
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.
-
@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.
-
@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?
-
@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:
-
Thanks!
-
@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.
-
@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!
-
@lafayette the DunningโKruger effect lol so true I often underestimate my skills in various areas

-
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

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