* bug#33803: gomoku demotivational messages @ 2018-12-19 7:52 Daniel Vianna 2018-12-19 15:13 ` Eli Zaretskii ` (3 more replies) 0 siblings, 4 replies; 7+ messages in thread From: Daniel Vianna @ 2018-12-19 7:52 UTC (permalink / raw) To: 33803 [-- Attachment #1: Type: text/plain, Size: 10464 bytes --] From: dmlvianna@gmail.com To: bug-gnu-emacs@gnu.org Subject: 26.1; gomoku demotivational messages --text follows this line-- * Start of message Gomoku made my 6 year old child cry. I hope you take it seriously. I am introducing my child to programming by letting him play games in emacs. He loves snake. He understands that programs are just instructions (like Lego instructions) that the computer must follow to do things. And now he found Gomoku. I believe emacs should be an inviting environment for users. And gomoku, albeit hard, should not punish people from using it. But it does. All its messages are demotivational. I think this detracts emacs from the core GNU value of helping your friends to learn. Yes, I did what I was supposed to do in order to cheer him up. I told him not to believe on what the computer was saying (that "trying didn't help him much.") I told not to trust the computer. Is that the message you would like GNU to send to budding computer users? I am thankful for emacs. I hope it keeps getting better. That's why I wrote this. Regardless of changes being made to the messages, I'm going to show him the source and hopefully this will still serve as a lesson in programming. Kind regards, Daniel Vianna. * End of message In GNU Emacs 26.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.30) of 2018-12-01 built on localhost Windowing system distributor 'The X.Org Foundation', version 11.0.11906000 Recent messages: Let me think... Your move? Let me think... Your move? Let me think... Your move? Let me think... Your move? Let me think... I won... Playing first did not help you much! Configured using: 'configure --prefix=/nix/store/p9pi161yslb7gnmw77c3r08wx9lmg3bh-emacs-26.1 --with-modules --with-x-toolkit=gtk3 --with-xft CFLAGS=-DMAC_OS_X_VERSION_MAX_ALLOWED=101200' Configured features: XPM JPEG TIFF GIF PNG RSVG SOUND DBUS GSETTINGS NOTIFY LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 MODULES THREADS LIBSYSTEMD Important settings: value of $EMACSLOADPATH: /nix/store/6ykjgzh208hm7j3zqwbysckfckpkvhbi-emacs-packages-deps/share/emacs/site-lisp: value of $LANG: en_AU.UTF-8 locale-coding-system: utf-8-unix Major mode: Gomoku Minor modes in effect: pyvenv-mode: t global-magit-file-mode: t diff-auto-refine-mode: t magit-auto-revert-mode: t global-git-commit-mode: t async-bytecomp-package-mode: t shell-dirtrack-mode: t global-flycheck-mode: t auto-compile-on-load-mode: t auto-compile-on-save-mode: t override-global-mode: t xterm-mouse-mode: t global-auto-revert-mode: t tooltip-mode: t global-eldoc-mode: t electric-indent-mode: t mouse-wheel-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t buffer-read-only: t column-number-mode: t line-number-mode: t global-visual-line-mode: t visual-line-mode: t transient-mark-mode: t Load-path shadows: /home/dmvianna/.emacs.d/elpa/elpy-20181214.2233/elpy-pkg hides /nix/store/6ykjgzh208hm7j3zqwbysckfckpkvhbi-emacs-packages-deps/share/emacs/site-lisp/elpa/elpy-20180720.155/elpy-pkg /home/dmvianna/.emacs.d/elpa/elpy-20181214.2233/elpy-django hides /nix/store/6ykjgzh208hm7j3zqwbysckfckpkvhbi-emacs-packages-deps/share/emacs/site-lisp/elpa/elpy-20180720.155/elpy-django /home/dmvianna/.emacs.d/elpa/elpy-20181214.2233/elpy hides /nix/store/6ykjgzh208hm7j3zqwbysckfckpkvhbi-emacs-packages-deps/share/emacs/site-lisp/elpa/elpy-20180720.155/elpy /home/dmvianna/.emacs.d/elpa/elpy-20181214.2233/elpy-shell hides /nix/store/6ykjgzh208hm7j3zqwbysckfckpkvhbi-emacs-packages-deps/share/emacs/site-lisp/elpa/elpy-20180720.155/elpy-shell /home/dmvianna/.emacs.d/elpa/elpy-20181214.2233/elpy-profile hides /nix/store/6ykjgzh208hm7j3zqwbysckfckpkvhbi-emacs-packages-deps/share/emacs/site-lisp/elpa/elpy-20180720.155/elpy-profile /home/dmvianna/.emacs.d/elpa/elpy-20181214.2233/elpy-refactor hides /nix/store/6ykjgzh208hm7j3zqwbysckfckpkvhbi-emacs-packages-deps/share/emacs/site-lisp/elpa/elpy-20180720.155/elpy-refactor /home/dmvianna/.emacs.d/elpa/elpy-20181214.2233/elpy-autoloads hides /nix/store/6ykjgzh208hm7j3zqwbysckfckpkvhbi-emacs-packages-deps/share/emacs/site-lisp/elpa/elpy-20180720.155/elpy-autoloads /home/dmvianna/.emacs.d/elpa/flycheck-20181214.1048/flycheck hides /nix/store/6ykjgzh208hm7j3zqwbysckfckpkvhbi-emacs-packages-deps/share/emacs/site-lisp/elpa/flycheck-20180720.247/flycheck /home/dmvianna/.emacs.d/elpa/flycheck-20181214.1048/flycheck-autoloads hides /nix/store/6ykjgzh208hm7j3zqwbysckfckpkvhbi-emacs-packages-deps/share/emacs/site-lisp/elpa/flycheck-20180720.247/flycheck-autoloads /home/dmvianna/.emacs.d/elpa/flycheck-20181214.1048/flycheck-ert hides /nix/store/6ykjgzh208hm7j3zqwbysckfckpkvhbi-emacs-packages-deps/share/emacs/site-lisp/elpa/flycheck-20180720.247/flycheck-ert /home/dmvianna/.emacs.d/elpa/flycheck-20181214.1048/flycheck-pkg hides /nix/store/6ykjgzh208hm7j3zqwbysckfckpkvhbi-emacs-packages-deps/share/emacs/site-lisp/elpa/flycheck-20180720.247/flycheck-pkg /home/dmvianna/.emacs.d/elpa/flycheck-20181214.1048/flycheck-buttercup hides /nix/store/6ykjgzh208hm7j3zqwbysckfckpkvhbi-emacs-packages-deps/share/emacs/site-lisp/elpa/flycheck-20180720.247/flycheck-buttercup /home/dmvianna/.emacs.d/elpa/flycheck-mypy-20180907.1016/flycheck-mypy hides /nix/store/6ykjgzh208hm7j3zqwbysckfckpkvhbi-emacs-packages-deps/share/emacs/site-lisp/elpa/flycheck-mypy-20180518.4/flycheck-mypy /home/dmvianna/.emacs.d/elpa/flycheck-mypy-20180907.1016/flycheck-mypy-pkg hides /nix/store/6ykjgzh208hm7j3zqwbysckfckpkvhbi-emacs-packages-deps/share/emacs/site-lisp/elpa/flycheck-mypy-20180518.4/flycheck-mypy-pkg /home/dmvianna/.emacs.d/elpa/flycheck-mypy-20180907.1016/flycheck-mypy-autoloads hides /nix/store/6ykjgzh208hm7j3zqwbysckfckpkvhbi-emacs-packages-deps/share/emacs/site-lisp/elpa/flycheck-mypy-20180518.4/flycheck-mypy-autoloads /nix/store/6ykjgzh208hm7j3zqwbysckfckpkvhbi-emacs-packages-deps/share/emacs/site-lisp/site-start hides /nix/store/p9pi161yslb7gnmw77c3r08wx9lmg3bh-emacs-26.1/share/emacs/site-lisp/site-start /nix/store/6ykjgzh208hm7j3zqwbysckfckpkvhbi-emacs-packages-deps/share/emacs/site-lisp/elpa/seq-2.20/seq hides /nix/store/p9pi161yslb7gnmw77c3r08wx9lmg3bh-emacs-26.1/share/emacs/26.1/lisp/emacs-lisp/seq /nix/store/6ykjgzh208hm7j3zqwbysckfckpkvhbi-emacs-packages-deps/share/emacs/site-lisp/elpa/let-alist-1.0.5/let-alist hides /nix/store/p9pi161yslb7gnmw77c3r08wx9lmg3bh-emacs-26.1/share/emacs/26.1/lisp/emacs-lisp/let-alist Features: (shadow sort mail-extr emacsbug sendmail gomoku init rainbow-delimiters rainbow-mode rust-config flycheck-rust racer pos-tip f cargo cargo-process rust-mode python-config yasnippet elec-pair highlight-indentation flymake-proc flymake warnings company-capf help-fns radix-tree elpy find-file-in-project elpy-shell pyvenv esh-var esh-io esh-cmd esh-opt esh-ext esh-proc esh-arg esh-groups eshell esh-module esh-mode esh-util elpy-profile elpy-django s elpy-refactor python tramp-sh tramp tramp-compat tramp-loaddefs trampver ucs-normalize parse-time grep files-x etags xref project cus-edit cus-start cus-load wid-edit flycheck-mypy purescript-config purescript-mode purescript-string purescript-sort-imports purescript-align-imports cl compile dabbrev hyde hyde-md hyde-git markdown-mode color noutline outline json-mode json-reformat json-snatcher js sgml-mode dom thingatpt cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs javascript-config web-mode disp-table haskell-config nix-config pickle magit-obsolete magit-blame magit-stash magit-bisect magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-tag magit-merge magit-branch magit-reset magit-collab ghub url-http tls gnutls url-gw nsm url-auth url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf url-util mailcap let-alist magit-files magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log which-func imenu magit-diff smerge-mode diff-mode magit-core magit-autorevert magit-process magit-margin magit-mode git-commit magit-git magit-section magit-utils crm magit-popup log-edit message rmc puny dired dired-loaddefs format-spec rfc822 mml mml-sec epa derived epg gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log with-editor async-bytecomp async shell pcomplete comint ansi-color ring server company pcase flycheck json map find-func subr-x cl-extra help-mode jka-compr solarized-dark-theme solarized dash misc-config exec-path-from-shell auto-compile advice packed use-package use-package-ensure use-package-delight use-package-diminish use-package-bind-key bind-key easy-mmode use-package-core xt-mouse windmove autorevert filenotify ido finder-inf rx edmacro kmacro info package easymenu epg-config url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache url-vars seq seq-25 byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib time-date mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote dbusbind inotify dynamic-setting system-font-setting font-render-setting move-toolbar gtk x-toolkit x multi-tty make-network-process emacs) Memory information: ((conses 16 566265 24794) (symbols 48 45888 3) (miscs 40 48 114) (strings 32 139006 3067) (string-bytes 1 4118036) (vectors 16 70655) (vector-slots 8 1131524 24442) (floats 8 389 311) (intervals 56 837 107) (buffers 992 12)) [-- Attachment #2: Type: text/html, Size: 12663 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#33803: gomoku demotivational messages 2018-12-19 7:52 bug#33803: gomoku demotivational messages Daniel Vianna @ 2018-12-19 15:13 ` Eli Zaretskii [not found] ` <CAMLJ+NEpw=XL0qJH1UJD6W5JJ436opwRKbNSFTB-Jqu9mXBN7A@mail.gmail.com> 2018-12-19 15:17 ` Francesco Potortì ` (2 subsequent siblings) 3 siblings, 1 reply; 7+ messages in thread From: Eli Zaretskii @ 2018-12-19 15:13 UTC (permalink / raw) To: Daniel Vianna; +Cc: 33803 > From: Daniel Vianna <dmlvianna@gmail.com> > Date: Wed, 19 Dec 2018 18:52:28 +1100 > > Gomoku made my 6 year old child cry. Maybe we could have a child-mode in Gomoku, which would substitute the messages with something more encouraging. ^ permalink raw reply [flat|nested] 7+ messages in thread
[parent not found: <CAMLJ+NEpw=XL0qJH1UJD6W5JJ436opwRKbNSFTB-Jqu9mXBN7A@mail.gmail.com>]
* bug#33803: gomoku demotivational messages [not found] ` <CAMLJ+NEpw=XL0qJH1UJD6W5JJ436opwRKbNSFTB-Jqu9mXBN7A@mail.gmail.com> @ 2018-12-22 9:29 ` Eli Zaretskii 0 siblings, 0 replies; 7+ messages in thread From: Eli Zaretskii @ 2018-12-22 9:29 UTC (permalink / raw) To: Daniel Vianna; +Cc: 33803 [Please use Reply All to keep the bug address on the CC list.] > From: Daniel Vianna <dmlvianna@gmail.com> > Date: Thu, 20 Dec 2018 08:05:20 +1100 > > Well... I feel discouraged too. As an adult. I believe that depends on personal preferences. > I understand the code is supposed to be terse an easy to interpret. Just making the messages more > encouraging would be great. I'm quite sure the original messages were written with an explicit goal to tease the human player. It could be detrimental when the player is young and this is his/her first experience with playing games with computers. > Another potential improvement would be to count how many moves were made leading to the end of the > game. As it stands, Gomoku displays only how many games were won/lost. It doesn't take into account that > the player might be making progress in terms of dragging the game longer until the algorithm wins. > > I believe the aim of any piece of elisp should be to encourage the user to keep improving. > > I'm not confident in elisp myself. Should I have a go at it? If you can propose the changes to the messages and/or the places where you think a move count will be useful, please do that, in plain English, using the source line numbers to specify the location of each change. Changes in Lisp, if they are more than a dozen lines, will require that you assign the copyright to the FSF, which involves filling and sending a simple form with information about your changes. Thanks. ^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#33803: gomoku demotivational messages 2018-12-19 7:52 bug#33803: gomoku demotivational messages Daniel Vianna 2018-12-19 15:13 ` Eli Zaretskii @ 2018-12-19 15:17 ` Francesco Potortì 2018-12-22 14:09 ` Douglas Lewan 2018-12-28 5:59 ` Paul Eggert 3 siblings, 0 replies; 7+ messages in thread From: Francesco Potortì @ 2018-12-19 15:17 UTC (permalink / raw) To: Daniel Vianna; +Cc: 33803 >Gomoku made my 6 year old child cry. ... >I am thankful for emacs. I hope it keeps getting better. That's why I >wrote this. Regardless of changes being made to the messages, I'm going >to show him the source and hopefully this will still serve as a lesson >in programming. If you can show the sources, I think you can turn a bad experience into a good one! Just look at the messages, and change them, then have your child play again with the new messages you wrote together :) ^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#33803: gomoku demotivational messages 2018-12-19 7:52 bug#33803: gomoku demotivational messages Daniel Vianna 2018-12-19 15:13 ` Eli Zaretskii 2018-12-19 15:17 ` Francesco Potortì @ 2018-12-22 14:09 ` Douglas Lewan 2018-12-28 5:59 ` Paul Eggert 3 siblings, 0 replies; 7+ messages in thread From: Douglas Lewan @ 2018-12-22 14:09 UTC (permalink / raw) To: 33803 [-- Attachment #1: Type: text/plain, Size: 429 bytes --] From: Eli Zaretskii <eliz@gnu.org> > If you can propose the changes to the messages and/or the places where > you think a move count will be useful, please do that, in plain > English,.... This sounds to me like a perfect opportunity for customization. -- ,Doug Douglas Lewan +1 (908) 720-7908 Give me "assloads of config" over "some other person thought they could decide what I like" any day. - Szmo, on reddit, 2017 Sep 05 [-- Attachment #2: Type: text/html, Size: 736 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#33803: gomoku demotivational messages 2018-12-19 7:52 bug#33803: gomoku demotivational messages Daniel Vianna ` (2 preceding siblings ...) 2018-12-22 14:09 ` Douglas Lewan @ 2018-12-28 5:59 ` Paul Eggert 2018-12-28 7:38 ` Daniel Vianna 3 siblings, 1 reply; 7+ messages in thread From: Paul Eggert @ 2018-12-28 5:59 UTC (permalink / raw) To: Daniel Vianna; +Cc: 33803 [-- Attachment #1: Type: text/plain, Size: 244 bytes --] Thanks for the bug report. I installed into the master branch the attached patch, which I hope prevents similar problems in the future. I didn't implement a move-counter; perhaps someone else can volunteer to do that, if they have the time. [-- Attachment #2: 0001-Improve-motivations-in-gomoku-messages.patch --] [-- Type: text/x-patch, Size: 3401 bytes --] From 8167316fd6406adbeb8fe91db9ee59e2f47bddb0 Mon Sep 17 00:00:00 2001 From: Paul Eggert <eggert@cs.ucla.edu> Date: Thu, 27 Dec 2018 21:55:01 -0800 Subject: [PATCH] Improve motivations in gomoku messages * lisp/play/gomoku.el (gomoku-terminate-game): Don't make six-year-old children cry (Bug#33803). --- lisp/play/gomoku.el | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/lisp/play/gomoku.el b/lisp/play/gomoku.el index 6ce2750f86..32b29b70f4 100644 --- a/lisp/play/gomoku.el +++ b/lisp/play/gomoku.el @@ -656,48 +656,48 @@ gomoku-terminate-game ((eq result 'emacs-won) (setq gomoku-number-of-emacs-wins (1+ gomoku-number-of-emacs-wins)) (cond ((< gomoku-number-of-moves 20) - "This was a REALLY QUICK win.") + "I won... I hope you like the game as you get better.") (gomoku-human-refused-draw "I won... Too bad you refused my offer of a draw!") (gomoku-human-took-back - "I won... Taking moves back will not help you!") + "I won... It's OK to take back more moves next time.") ((not gomoku-emacs-played-first) - "I won... Playing first did not help you much!") + "I won... Use C-c C-b to take back a move on second thought.") ((and (zerop gomoku-number-of-human-wins) (zerop gomoku-number-of-draws) (> gomoku-number-of-emacs-wins 1)) - "I'm becoming tired of winning...") + "I won... It might be time take a break before trying again.") ("I won."))) ((eq result 'human-won) (setq gomoku-number-of-human-wins (1+ gomoku-number-of-human-wins)) (concat "OK, you won this one." (cond (gomoku-human-took-back - " I, for one, never take my moves back...") + " For a bigger challenge, play without taking moves back.") (gomoku-emacs-played-first - ".. so what?") - (" Now, let me play first just once.")))) + " Congratulations!") + (" For a bigger challenge, let me play first.")))) ((eq result 'human-resigned) (setq gomoku-number-of-emacs-wins (1+ gomoku-number-of-emacs-wins)) - "So you resign. That's just one more win for me.") + "I see that you resigned. Better luck next time.") ((eq result 'nobody-won) (setq gomoku-number-of-draws (1+ gomoku-number-of-draws)) (concat "This is a draw. " (cond (gomoku-human-took-back - "I, for one, never take my moves back...") + " For a bigger challenge, try without taking moves back.") (gomoku-emacs-played-first - "Just chance, I guess.") - ("Now, let me play first just once.")))) + "Wow, that was a long game. We both played well.") + (" For a bigger challenge, let me play first.")))) ((eq result 'draw-agreed) (setq gomoku-number-of-draws (1+ gomoku-number-of-draws)) (concat "Draw agreed. " (cond (gomoku-human-took-back - "I, for one, never take my moves back...") + " For a bigger challenge, try without taking moves back.") (gomoku-emacs-played-first - "You were lucky.") - ("Now, let me play first just once.")))) + "Good game.") + (" For a bigger challenge, let me play first.")))) ((eq result 'crash-game) "Sorry, I have been interrupted and cannot resume that game..."))) (gomoku-display-statistics) -- 2.17.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* bug#33803: gomoku demotivational messages 2018-12-28 5:59 ` Paul Eggert @ 2018-12-28 7:38 ` Daniel Vianna 0 siblings, 0 replies; 7+ messages in thread From: Daniel Vianna @ 2018-12-28 7:38 UTC (permalink / raw) To: Paul Eggert; +Cc: 33803 Wow. That was inspired. Thank you! -- Daniel Vianna > On 28 Dec 2018, at 4:59 pm, Paul Eggert <eggert@cs.ucla.edu> wrote: > > Thanks for the bug report. I installed into the master branch the attached patch, which I hope prevents similar problems in the future. I didn't implement a move-counter; perhaps someone else can volunteer to do that, if they have the time. > <0001-Improve-motivations-in-gomoku-messages.patch> ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2018-12-28 7:38 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-12-19 7:52 bug#33803: gomoku demotivational messages Daniel Vianna 2018-12-19 15:13 ` Eli Zaretskii [not found] ` <CAMLJ+NEpw=XL0qJH1UJD6W5JJ436opwRKbNSFTB-Jqu9mXBN7A@mail.gmail.com> 2018-12-22 9:29 ` Eli Zaretskii 2018-12-19 15:17 ` Francesco Potortì 2018-12-22 14:09 ` Douglas Lewan 2018-12-28 5:59 ` Paul Eggert 2018-12-28 7:38 ` Daniel Vianna
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).