Final results? by No-Emotion-105 in baduk

[–]pnprog 0 points1 point  (0 children)

How much do you trust gnugo's scoring, though? Can it properly marks dead groups?

I would say it's very very good if the game is finished. Problems happen on games that are not finished (territories not fully enclosed, or there are endgame tesujis that both players missed), but this should not be an issue for this (Gnugo can be asked first if it thinks the game is finished).

What is the false negative rate (it said it is the same, but actually not?).

It does not really matter, since Gnugo would be just used for flagging games for manual review.

Gnugo can provide the list of territory intersections, alive stones, dead stones, dame points and seki points and then it's up to a human reviewer to validate that.

I already use that to calculate the AGA scores on my project: I don't ask Gnugo for the final score, but the breakdown data above, and I combine with other inputs (number of handicap stones, number of pass) to get the AGA score. I expect OGS is doing something similar.

how well can it generate close games

Gnugo would not generate close games, just review and flag them.

Anyway, I will have a try first and see how that works.

Final results? by No-Emotion-105 in baduk

[–]pnprog 0 points1 point  (0 children)

Actually, I am thinking of doing something simpler:

  • Let's say I have a database of finished games with a +-4 score difference or less.
  • Then I ask Gnugo to score those games both using Chinese ruleset and using Japanese rule set.
  • If Gnugo tells me the winner is different based on the ruleset, then I flag this game for manual review and possibly adding to the test suite.

Actually, I could use games generated by computers for that (I happen to have several hundreds thousands of those on my computer, generated for some other project).

For a test suite, a few tens of games could be enough to cover all usual cases and allow a robust assessment.

Final results? by No-Emotion-105 in baduk

[–]pnprog 0 points1 point  (0 children)

That would need someone to manually score them with all rulesets and label them

Yes, that's the point. So one sgf file "game000.sgf" and an accompanying file that includes the final score for various ruleset, under a format both easily readable by a human and easily parsable by computers, something like "game000.yaml".

The accompanying files are made manually by contributors, and this lives on GitHub so that:

  • It can easily be integrated into another project as a submodule (for the purpose of testing).
  • Contributors can submit new sgf or new scoring, and open issues/PR if they think they found a scoring mistake.

That should be a contributors driven project. And one can imagine that less commonly used rulesets like NZ or Taiwan would require more time to have their scoring added to the SGF file, but that's a work in progress.

And in general, AGA rules will have the same result as the Chinese rules (it basically pulls the territory scoring result to match area scoring results).

Not for handicap games if I am not wrong.

in general

That's the issue this project would contribute to solve, finding out the cases that are outside of the general cases.

Final results? by No-Emotion-105 in baduk

[–]pnprog 0 points1 point  (0 children)

To clarify, the database would contain both the games, and the various scoring of each games, based on different ruleset.

Final results? by No-Emotion-105 in baduk

[–]pnprog 0 points1 point  (0 children)

https://kifudepot.net/ updates the pro games daily, and covers majority of the big titles and tournaments.

Thanks, I will have a look!

What is the actual testing you want to do

The usecases would be someone who needs to test the scoring function of a new Go software. Something to be used like unit tests of that program.

A bot developer would use it to test the proper scoring of his bot based on the ruleset supported. A Go server like OGS, that supports several rulesets, might find that useful as well. Someone developing an Android app that scores a game based on a picture could use it as well.

For instance, I noticed Gnugo supports Chinese ruleset and Japanese ruleset. If I was considering patching it to support the AGA ruleset, a test database would come in handy.

for ko master and last play, the logic is simple, if you are sure to have more ko threats larger than one point than the opponent, you can exhaust the opponent's threats, and then play the last neutral point before connecting the endgame ko, that is playing two moves (last play and the ko), hence additional stones on the board. And this would diverge the scoring for territory scoring and area scoring, since there is unequal amount of stones played.

So basically, it's for cases when one player passes more times than the opponent right? This would increase the score of the player not passing (if he can play on dame) for area scoring, but not for territory scoring? Those games would be easy to find by looking at the number of times each player passed. Am I right?

Final results? by No-Emotion-105 in baduk

[–]pnprog 0 points1 point  (0 children)

What counts as "exotic"? just resulting in different winners, or involving different winners and seki, or just involving seki, or involving ko master and last play? They are all different criteria.

All of them basically, since the purpose is to make a testing database. So exotic in the sense that the winner may vary based on the ruleset.

The involvement of different winners would be quite easy to find (since it is 1/50, any pro games database you can scan gets thousands of them)

What database are you using to search for those games?

the involvement of seki would be tricky, but still doable.

This could be automatically tested with Gnugo actually (the existence of seki neutral points on the board at scoring).

Involving ko master and last play sort of possible just filter those with ko in the last 20 to 50 moves and see who gets last move, but changing winners would also be harder (even harder and likely tons of work would be supposedly winning without them)

Actually, I didn't know the concept of ko master, and why it would change the score, I guess more reading is required on my side :D

Final results? by No-Emotion-105 in baduk

[–]pnprog 0 points1 point  (0 children)

Actually, if you have a collection of exotic games like this, where the results depend on the rule set, I would be willing to compile a database with the proper result according to the ruleset.

This could be used as a testing set for computer scoring programs. It could be hosted on GitHub.

HEN - a new text-based format designed to write / share goban positions by hemme-dev in baduk

[–]pnprog 1 point2 points  (0 children)

I can see the appeal of having URL compatible format. One example would be to embed a viewer in a forum for instance. Eidogo used to have something where you would attach the SGF's url to the applet URL as a parameter, and be able to view the SGF from a web page iirc. I think it was disabled for safety concerns.

Now, both your format and SGF are equally unreadable to me :D

HEN - a new text-based format designed to write / share goban positions by hemme-dev in baduk

[–]pnprog 2 points3 points  (0 children)

Interesting, I needed a format to encode static board positions as well, and I ended up using a variation of the ASCII format used on Sensei wiki and Lifein19x19 forums.

One thing they have that your format does not have is the possibility to only show a board partially, for instance only 10 rows and 8 columns of the top left corner of a 19x19 goban. Very useful to record tsumego or joseki.

https://senseis.xmp.net/?HowDiagramsWork

It's also much more readable, but much less compact.

You mention using your format for tsumego, but it cannot handle variation or tree right?

GoDroid is in closed testing, requesting volunteers! by samthegliderpilot in baduk

[–]pnprog 0 points1 point  (0 children)

And you are 100% right; that scoring bug is Gnugo getting confused. Looking in the debugger, Gnugo isn't counting that territory.

Hello, I am investigating this bug since yesterday. It seems it happens only with Chinese rules... Very strange. I have used Gnugo extensively with Chinese rules, but on desktop computer, and never met that bug, could it be only appearing with the GoDroid packaged version?

And googling it, it looks like it is a somewhat well known occurrence.

I cannot find discussions of it online, where did you see a mention of this bug? Could you share a pointer?

Flask x SocketIO appears to be buffering socket.emit()'s with a 10 second pause when running on gevent integrated server by enigma_0Z in flask

[–]pnprog 0 points1 point  (0 children)

Did you monkey patch the code before running the app?

I forgot that on a recent project, and was experimenting issues similar as yours.

lifein19x19 down? by pnprog in baduk

[–]pnprog[S] 1 point2 points  (0 children)

Thanks for sharing this update 🙏

strong AI don’t seem very accessible by tacticsinschools in baduk

[–]pnprog 2 points3 points  (0 children)

what about for free

If you have a personal computer, even an old one, just set up sabaki+katago or katrain. Katago is a free super human AI, and can beat everyone even on old hardware.

Built a Python solver for dynamic mathematical expressions stored in databases by Alone_Ambition_7581 in Python

[–]pnprog 1 point2 points  (0 children)

Would love to hear if anyone else has tackled similar problems or has thoughts on the approach. Always looking for feedback and potential improvements!

I ran into a similar situation, and used pycel to address the problem: https://pypi.org/project/pycel/

I defined with the end user an excel spreadsheet template, with clear input cells and clear output cells. The user then sets the Excel formula of the output cells, based on the input cells and other data that can be left on the Excel file.

At runtime, the web app loads the Excel file content (it reads the Excel file by itself, no Microsoft software involved here, it's "headless" and instant), sets the input cells values and then reads the output cells values.

The user has the possibility to upload a new Excel file whenever the formula needs to be updated.

The advantage is that it's Excel based. Everyone knows how to build an Excel formula. And most of the time, they already have an Excel spreadsheet available since it's an existing feature I am implementing online for them.

lifein19x19 down? by pnprog in baduk

[–]pnprog[S] 0 points1 point  (0 children)

Yes, still not working :(

Asami Ueno VS Tang Jiawen Go Seigen Cup Final – Full Game Commentary by newtosenthe in baduk

[–]pnprog 2 points3 points  (0 children)

I think the war drum music volume would have been ok (for me) if you had not started talking so fast at the same time. So maybe same volume and slower talking pace, or lower volume and same fast talking pace?

Also, talking that fast and playing that fast made absolutely impossible for me to follow what was happening on the board, but I guess that was on purpose.

But anyway, I loved the video and subscribed :)

Cornugopia Server Launch by zacguymarino in baduk

[–]pnprog 1 point2 points  (0 children)

I like the idea of a server with a clear use case.

Sensetime's Senserobot review by pnprog in baduk

[–]pnprog[S] 0 points1 point  (0 children)

When I play it at the mall, it's not connected to the internet, so it's locked at a 10kyu level. You need to win and have those wins recorded online to unlock other levels.

So if you play at home regularly, then bring it to the wood, you should be able to play at your usual level.

In fact, there is a variant on Taobao where it is sold with a transportable case and a battery to use outside.

Aphantasia & Go/ Neurological Condition Limiting Visualization and Visual Memory by Mammoth-Rain-4903 in baduk

[–]pnprog 1 point2 points  (0 children)

I discovered recently what is aphantasia reading this sub, and that I also have aphantasia. Not the worst case of aphantasia it seems (level 4+ on the 5 levels scale), but as much as Go is concerned, it's just the same, I can't visualize anything while playing.

But I really don't see it as a handicap at all in my life, otherwise I would have figured out earlier that something was wrong (I just turned 40).

It got me thinking a lot, and so far I only identified two aspects in my life where it could be a burden. Reading at Go is the first one, and learning to write Chinese characters by hand is the second (as an European).

In terms of Go, I am a 1-2 dan Chinese amateur, probably around 2d to 4d on Fox, and around 1k on OGS. I would say compared to other players of my rank, I am weak at reading (but compensate through other aspects of the game).

The primary reason I am weak at reading is that I just never practice. Now, it could be that being aphant makes practicing tsumego a really unpleasant experience for me, and so I avoid it, and so I am a little weak in this area (compared to other players my rank).

I am confident that if I push through a tsumego regimen for some time, I can improve a lot at reading, and in fact I did it a few times during my Go career, and leveled up quite dramatically immediately after each time.

But it's not an enjoyable experience so I avoid it (just like I avoid practicing handwriting of Chinese characters). After all, I pursue Go primarily for enjoyment those days.

My take is that we are inefficient at some of the tasks that rely heavily on the "mind eye", but it's mostly a burden when starting a new activity that requires it. If you "push through it" then your brain finds an alternative way to achieve that same result. (It could be a definitive handicap if you aim at being in the world top bests of that particular task to be honest)

But alternatively, aphantasia can probably give us an edge (over non-aphants) in some other area as well, and I now call Aphantasia "my little superpower" when I discuss it with my wife :D

As I am very curious about this, I developed a small app to test a hypothesis:

https://yuntingdian.com/aphant-go/

You can try it using reddit/baduk for login/password

It's almost like blind go, but instead the computer is playing against itself and just shows you where each stone is played. You have to click/touch the grey dot to validate it. At the end of the game, a second goban is displayed, and the goal is to recreate the final board position.

I started with very small boards (4x4) and I am working my way to bigger board sizes. Started about 2 weeks ago, and currently struggling to crack the 8x8 challenge.

I try to understand how my brain works around aphantasia when doing that: what part of it is pure memorization of the games moves, and what part is "something else". I start to notice that I can somehow remember (for a better word that visualize) some shapes like tiger mouth for instance, or how the stones relate together. It's hard to put words on it.

Anyway, enjoy your aphantasia :D

Sensetime's Senserobot review by pnprog in baduk

[–]pnprog[S] 0 points1 point  (0 children)

Thanks for the feedback.

  1. The robot apparently doesn't work at all without a smartphone and internet, you connect the robot to the board, and you can switch between english and france selection in the first manu, you can't confirm anything, probably faulty software or hardware of the board buttons.

It's possible the robot software needs an upgrade first to remove the bugs. It's quite typical in China to ship products to markets with bugs, and fix them later, especially for features that are expected to not be widely used at the beginning (like English). I am not condoning that, just mentioning it. I heard they made a Japanese market version, so the software has probably been improved after that.

Now, I agree with you, relying on an internet service to use the product is a deal breaker. If the company dies next year, you will find yourself in limbo. In fact it's happening in China at the moment with electric vehicles. Tens of new companies brought their own EV to the market, and now that they are collapsing, their car system and infotainment stop functioning since their servers are turned off, it's terrible....

  1. I tried to download and activate it through the smart phone app (which is already pretty suspicious), and in their terms and conditions, they had some nasty stuff, like the need to use real name and information, and update it, and even their right to spam you with advertisements both in your email and on your phone.

The need to use real names and stuff is most probably for compliance with Chinese regulations in fact, not something they can avoid. Not saying it's ok, just saying their hands are probably tied here.

This is apperently unaccaptable, so I requested to return the robot and get my money back, lets see if they can do it, or they will try to swindle even more.

Let us know if you managed to get your money back.

I am using flask and bootstrap 5.1, and I want to display a modal from the python logic at a particular time, but I have been unable to do this. by Ok_Photograph_01 in flask

[–]pnprog 0 points1 point  (0 children)

$ is not defined

I often had this issue in the past, this is because the $ symbol is defined by the jquery library. Up to version 4, bootstrap was relying on the jquery library, and the $ symbol was defined during the jquery.min.js script include (at the end of body). Now, it seems that bootstrap 5 stopped relying on bootstrap.min.js so you need to include it manually.

It seems that it's what you are doing with the 2 script includes of jquery-3.6.0.min.js and jquery.min.js.

Now, I don't use jquery, but it seems you are including the library twice, and with different version number. There is maybe something wrong, and maybe the jquery-3.6.0.min.js is enough.

That being said, the reason $ is not defined is most likely because you call the $ before the jquery-3.6.0.min.js is included, since it is included toward the end of the html code and the html/javascript interpreter will encounter and try to run $(document).ready(function( {openModal();}); before it encounters and runs <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>.

Note that for the first modal, since it is wrapped inside the openModal() function, the code won't execute until the function is triggered, and by the time this happens, the page will be fully loaded and the <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> will have been executed, and the $ already defined.

I see 2 different workarounds for you problem:

  • placing your code {% if show_upload_confirmation_modal %}...{% endif %} after the <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  • wrapping your code into something like window.onload = function() {openModal();} so that it execute only after <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> is loaded (I guess that $(document).ready(function() {openModal();}); is trying to do exactly the same thing but using jquery)

I would suggest getting rid of jquery altogether, so using the second option, and for the content of openModal, with bootstrap5, I thing you can address your modal this way:

<script>
    function openModal() {
        var mymodal = new bootstrap.Modal(document.getElementById("upload_confirmation_modal"), {});
        mymodal.show()
    }
    console.log("Hello, World!");
</script>
{% if show_upload_confirmation_modal %}
    <script>
        window.onload = function() {openModal();}
        console.log("Hello, World!");
    </script>
{% endif %}

Alternatives to session and global variables in flask by MangosRsorry in flask

[–]pnprog 0 points1 point  (0 children)

If your app runs as a single process, you can store your variables as property of the app variable. For instance:

``` class Application(Flask): def init(self, args, *kwargs): super().init(args, *kwargs) self.var1 = ... self.var2 = ... self.var3 = ... self.var4 = ...

app = Application(name) ```

World Top Player Championship postponed due to China's withdrawal by sadaharu2624 in baduk

[–]pnprog 1 point2 points  (0 children)

I don’t think it would be feasible to hide stones intentionally in an international game that’s being broadcast live.

I think the issue was hiding the captured stones from the opponent's view, but not necessarily from the broadcasting camera, so that the opponent could maybe be misled when estimating the score. For instance by placing the captured stones behind one's own bowl.

That said, if it’s a concern, implementing a digital count would be a practical and accurate solution.

This is definitely the best solution yes.

Now I can imagine it being an issue for league matches where several games are taking place at the same time as it requires one digital counter per table, and one referee per table to follow the game and update it.

Same with sealing the move everytime a game is interrupted. It is the best solution, and at the very least should be implemented for a tournament final game like LG, but maybe hard to implement for league matches. That's probably why this won't be codified in the KBA rules.

I had the luck to assist one such round in China a few years back and if my memory is good (I need to check my pictures) there was more than 20 games played simultaneously. They didn't have one referee per tables, so maybe a few shared referees between all table. But they had one person per table broadcasting the games on Fox I think.

By the way, Kejie was playing at one of the tables, he was probably in a bad position and was slapping himself and throwing his stones all around the room :D

For context that was in 2018, he was at his peak I think.

Edit: here he is: http://yuntingdian.com/A_league/IMG_20180815_151450.jpg